<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12259560</id><updated>2024-08-30T09:30:57.846-04:00</updated><category term="ironman"/><category term="perl"/><title type='text'>Manfred B. Perl</title><subtitle type='html'>pay no attention to the Man(fred) Behind the (Perl) curtain!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lylemelick.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://lylemelick.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lyle</name><uri>http://www.blogger.com/profile/01066775945889789613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuBtc3JPUjJOq0Jv5IVF3RrCTcdUtaMBNahzVlIb8lhKmylOE5b8e8Wr4c2atqfS-BZdJC7o7mMmxPYLhloj-Md62SMrz8NUCA6QioRQ6ImBtB95cLRlm1F08H5cJtJAg/s220/2012-05-18+07.59.42.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12259560.post-1263083517496612429</id><published>2012-06-18T20:50:00.001-04:00</published><updated>2012-06-18T20:50:30.318-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ironman"/><category scheme="http://www.blogger.com/atom/ns#" term="perl"/><title type='text'>One of my most used and least understood perl snippets</title><content type='html'>&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;# ----- this perl snippet will remove any leading or trailing white spaces&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;# ----- all spaces in the variable will NOT be reduced to one space&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;my $variable =~ s/^\s*(.*\S)\s*$/$1/; # trm ld/trl whtspc&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lylemelick.blogspot.com/feeds/1263083517496612429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12259560/1263083517496612429' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default/1263083517496612429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default/1263083517496612429'/><link rel='alternate' type='text/html' href='http://lylemelick.blogspot.com/2012/06/one-of-my-most-used-and-least.html' title='One of my most used and least understood perl snippets'/><author><name>Lyle</name><uri>http://www.blogger.com/profile/01066775945889789613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuBtc3JPUjJOq0Jv5IVF3RrCTcdUtaMBNahzVlIb8lhKmylOE5b8e8Wr4c2atqfS-BZdJC7o7mMmxPYLhloj-Md62SMrz8NUCA6QioRQ6ImBtB95cLRlm1F08H5cJtJAg/s220/2012-05-18+07.59.42.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12259560.post-23860233010474114</id><published>2012-06-09T16:49:00.000-04:00</published><updated>2012-06-09T16:49:33.060-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ironman"/><category scheme="http://www.blogger.com/atom/ns#" term="perl"/><title type='text'>Creating a SQL Server view - part 2</title><content type='html'>&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;
We&#39;ll need to present several sql commands to the server in order to create/update a view.&amp;nbsp; So let&#39;s talk about what&#39;s needed to execute a query from perl on a SQL Server. &lt;/div&gt;
&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;
First, let&#39;s initialize the connection: &lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;use DBI();&lt;br /&gt;my $SQL_Server&amp;nbsp;&amp;nbsp; = &#39;changeme&#39;;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;my $SQL_User &amp;nbsp;&amp;nbsp;&amp;nbsp; = &#39;changeme&#39;;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;my $SQL_password = &#39;changeme&#39;; &lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;my $inputfile = @ARGV[0];&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;my $dbh = DBI-&amp;gt;connect(&quot;DBI:ODBC:$SQL_Server&quot;, &quot;$SQL_User&quot;, &quot;$SQL_password&quot;, {PrintError =&amp;gt; 0, RaiseError =&amp;gt; 1}) or die &quot;Can&#39;t connect to dev database: $DBI::errstr\n&quot;;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;# ----- you can enable tracing if you&#39;d like:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;#$dbh-&amp;gt;trace(1);;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;# ----- My SQL Server wants a couple of settings set before executing a query, set them here.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;$dbh-&amp;gt;do(&quot;SET ANSI_NULLS ON&quot;);&lt;br /&gt;$dbh-&amp;gt;do(&quot;SET ANSI_WARNINGS ON&quot;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;# ----- set up the query &lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;my $drop_query = &quot;USE $Database; IF&amp;nbsp; EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N&#39;[dbo].[$inputfile]&#39;)) DROP VIEW [dbo].[$inputfile]&quot;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;# ----- execute it&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;$dbh-&amp;gt;do($drop_query);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;# ----- report any errors&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;warn &quot;view check terminated early by error: $DBI::errstr\n&quot; if $DBI::err;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;# ----- disconnect&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;$dbh-&amp;gt;disconnect or warn &quot;Error disconnecting: $DBI::errstr\n&quot;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lylemelick.blogspot.com/feeds/23860233010474114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12259560/23860233010474114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default/23860233010474114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default/23860233010474114'/><link rel='alternate' type='text/html' href='http://lylemelick.blogspot.com/2012/06/creating-sql-server-view-part-2.html' title='Creating a SQL Server view - part 2'/><author><name>Lyle</name><uri>http://www.blogger.com/profile/01066775945889789613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuBtc3JPUjJOq0Jv5IVF3RrCTcdUtaMBNahzVlIb8lhKmylOE5b8e8Wr4c2atqfS-BZdJC7o7mMmxPYLhloj-Md62SMrz8NUCA6QioRQ6ImBtB95cLRlm1F08H5cJtJAg/s220/2012-05-18+07.59.42.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12259560.post-3309832904775095780</id><published>2012-06-02T21:35:00.000-04:00</published><updated>2012-06-02T21:35:48.503-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ironman"/><category scheme="http://www.blogger.com/atom/ns#" term="perl"/><title type='text'>Creating a SQL Server view - part 1</title><content type='html'>&lt;div style=&quot;font-family: inherit;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;One of the things I do on a regular basis at work is query tables in databases that are identical in multiple databaseson the same instance of SQL Server.&amp;nbsp; For instance, there&#39;s 30 databases with a transaction table in each database that is identical in all 30 databases.&amp;nbsp; We need to create a unified view across all 30 databases that gives us the overall picture of transaction activity across the organization.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: inherit;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: inherit;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;To do this, I use something like the following:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: inherit;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;&quot;&gt;#!/usr/bin/perl&lt;br /&gt;&lt;br /&gt;use warnings;&lt;br /&gt;use strict;&lt;br /&gt;&lt;br /&gt;use DBI();&lt;br /&gt;&lt;br /&gt;my $database_count = 0;&lt;br /&gt;my $TheView = &#39;ViewName&#39;; # ----- what you&#39;d like to call the resulting view.&lt;br /&gt;&lt;br /&gt;my $SQL_Server = &#39;Fred&#39;;&amp;nbsp; # ----- your database server name here&lt;br /&gt;my $user = &#39;barney&#39;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- your SQL Server user name goes here&lt;br /&gt;my $password = &#39;sesame&#39;;&amp;nbsp; # ----- your SQL Server password goes here&lt;br /&gt;&lt;br /&gt;my $query = join(&quot;&quot;, &quot;CREATE VIEW [dbo].[&quot;,&amp;nbsp; $TheView, &quot;] AS &quot;);&lt;br /&gt;my $base_table = &#39;table_name&#39;;&amp;nbsp; # ----- Some Table That Exists identically In All databases&lt;br /&gt;&lt;br /&gt;# ----- Connect to database&lt;br /&gt;my $dbh = DBI-&amp;gt;connect(&quot;DBI:ODBC:$SQL_Server&quot;, &quot;$user&quot;, &quot;$password&quot;, {PrintError =&amp;gt; 0, RaiseError =&amp;gt; 1}) or die &quot;Can&#39;t connect to $SQL_Server database: $DBI::errstr\n&quot;; #$dbh-&amp;gt;trace(1);;&lt;br /&gt;&lt;br /&gt;# ----- get list of databases to act on&lt;br /&gt;my $sth = $dbh-&amp;gt;prepare(&quot;SELECT name FROM master.sys.databases WHERE name LIKE &#39;DB%&#39; ORDER BY name ASC;&quot;) or die &quot;Can&#39;t prepare SQL statement: $DBI::errstr\n&quot;; #$sth-&amp;gt;trace(2, &#39;trace1.lis&#39;);;&lt;br /&gt;$sth-&amp;gt;execute() or die &quot;Can&#39;t execute SQL statement: $DBI::errstr\n&quot;;&lt;br /&gt;while (my $ref = $sth-&amp;gt;fetchrow_hashref()) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $DataBase = $ref-&amp;gt;{&#39;name&#39;};&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- get ready to munge with the next database&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($database_count &amp;gt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $query = join(&quot;&quot;, $query, &quot;\nUNION ALL\n\n&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $database_count++;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $query = join(&#39;&#39;, $query, &#39;SELECT &#39;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- Pull the column names from the master database in the SQL Server Instance&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $dbh1 = DBI-&amp;gt;connect(&quot;DBI:ODBC:$SQL_Server&quot;, &quot;$user&quot;, &quot;$password&quot;, {PrintError =&amp;gt; 0, RaiseError =&amp;gt; 0}) or die &quot;Can&#39;t connect to $SQL_Server_Master database: $DBI::errstr\n&quot;; #$dbh-&amp;gt;trace(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $sth1 = $dbh1-&amp;gt;prepare(&quot;SELECT name FROM master.sys.columns WHERE OBJECT_NAME(object_id) = &#39;$base_table&#39;&quot;) or die &quot;Can&#39;t prepare SQL statement: $DBI::errstr\n&quot;; #$sth-&amp;gt;trace(2, &#39;trace.lis&#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sth1-&amp;gt;execute() or die &quot;Can&#39;t execute SQL statement: $DBI::errstr\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $column_count = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (my $ref1 = $sth1-&amp;gt;fetchrow_hashref()) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; my $column = $ref1-&amp;gt;{&#39;name&#39;};&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ---- here I put together a select query that includes every column from the table&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I plan on adding detail to the select query and the code that actually drops the view and loads the new version next time.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lylemelick.blogspot.com/feeds/3309832904775095780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12259560/3309832904775095780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default/3309832904775095780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default/3309832904775095780'/><link rel='alternate' type='text/html' href='http://lylemelick.blogspot.com/2012/06/creating-sql-server-view-part-1.html' title='Creating a SQL Server view - part 1'/><author><name>Lyle</name><uri>http://www.blogger.com/profile/01066775945889789613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuBtc3JPUjJOq0Jv5IVF3RrCTcdUtaMBNahzVlIb8lhKmylOE5b8e8Wr4c2atqfS-BZdJC7o7mMmxPYLhloj-Md62SMrz8NUCA6QioRQ6ImBtB95cLRlm1F08H5cJtJAg/s220/2012-05-18+07.59.42.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12259560.post-8431750744883644951</id><published>2012-05-25T09:30:00.005-04:00</published><updated>2012-05-25T09:32:46.986-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ironman"/><category scheme="http://www.blogger.com/atom/ns#" term="perl"/><title type='text'>Loading an Excel Spreadsheet</title><content type='html'>A lot of what I&#39;ll be writing about is based on code I&#39;m using in production.&amp;nbsp; It may not be the most optimized, the most &quot;correct&quot; or even all that elegant.&amp;nbsp; But it works for me.&amp;nbsp; If you&#39;re just getting started with perl, you &lt;i&gt;may &lt;/i&gt;find this interesting.&lt;br /&gt;
&lt;br /&gt;
I load a lot of data from many sources into a database for further analysis.&amp;nbsp; One of the common forms of data files is an excel spreadsheet.&amp;nbsp; A client&#39;s system may produce a daily log of activity, and I need to aggregate that into one place to study long term trends.&lt;br /&gt;
&lt;br /&gt;
Storing the files in a sub-directory (folder to you windows users), and running a perl to load all those files into a database is an easy way to get the data where I need it.&amp;nbsp; See &lt;a href=&quot;http://lylemelick.blogspot.com/2012/05/i-recently-signed-up-for-perl-ironman.html&quot; target=&quot;_blank&quot;&gt;last weeks post&lt;/a&gt; for the perl to cycle through all files in a sub-directory.&lt;br /&gt;
&lt;br /&gt;
You&#39;ll need to add this statement after the &quot;use strict;&quot; statement:&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;use Spreadsheet::ParseExcel; &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
You&#39;ll notice a couple of comments in the code about &quot;having your way with it&quot;.&amp;nbsp; Once of the things you can do is load the excel file into arrays for later fun stuff.&amp;nbsp; Here&#39;s the code you can insert at either of these comments:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $workbook = Spreadsheet::ParseExcel::Workbook-&amp;gt;Parse($CurrentFile);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my($row, $col, $sheet, $WkC);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach my $sheet (@{$workbook-&amp;gt;{Worksheet}}) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (my $row = $sheet-&amp;gt;{MinRow}; defined $sheet-&amp;gt;{MaxRow} &amp;amp;&amp;amp; $row &amp;lt;= $sheet-&amp;gt;{MaxRow} ; $row++) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (my $col = $sheet-&amp;gt;{MinCol};&amp;nbsp; defined $sheet-&amp;gt;{MaxCol} &amp;amp;&amp;amp; $col &amp;lt;= $sheet-&amp;gt;{MaxCol} ; $col++) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- Header Row&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($row == $sheet-&amp;gt;{MinRow}) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $column_name = $sheet-&amp;gt;{Cells}[0][$col]-&amp;gt;{Val};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $FieldName[$col] = $column_name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $WkC = $sheet-&amp;gt;{Cells}[$row][$col];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- you could decide to skip a column&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- if there&#39;s no field name in row 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # next if ( !(defined($FieldName[$col])) || ($FieldName[$col] eq &#39;&#39;) ); # skip row if it doesn&#39;t have a header&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- cleanup any data here&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (($WkC) &amp;amp;&amp;amp; ($WkC-&amp;gt;Value ne &#39;&#39;) &amp;amp;&amp;amp; ($FieldName[$col] eq &#39;SomeSpecificFieldName&#39;)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $temp_value =$WkC-&amp;gt;Value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $temp_value =~ s/\&#39;/\&#39;\&#39;/g; # deal with stinking &#39;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- Here we might do something interesting with each cell data&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- Here we can do something interesting with every cell data&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } # end of else for row 0 handling&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } # end of column handling&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- Now that you have the row loaded,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- You can do something interesting with it here&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } # end of row handling&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } # ----- end of worksheet handling&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;I hope you find this helpful.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lylemelick.blogspot.com/feeds/8431750744883644951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12259560/8431750744883644951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default/8431750744883644951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default/8431750744883644951'/><link rel='alternate' type='text/html' href='http://lylemelick.blogspot.com/2012/05/loading-excel-spreadsheet.html' title='Loading an Excel Spreadsheet'/><author><name>Lyle</name><uri>http://www.blogger.com/profile/01066775945889789613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuBtc3JPUjJOq0Jv5IVF3RrCTcdUtaMBNahzVlIb8lhKmylOE5b8e8Wr4c2atqfS-BZdJC7o7mMmxPYLhloj-Md62SMrz8NUCA6QioRQ6ImBtB95cLRlm1F08H5cJtJAg/s220/2012-05-18+07.59.42.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12259560.post-4162029613781202158</id><published>2012-05-18T07:56:00.000-04:00</published><updated>2012-05-18T08:12:31.779-04:00</updated><title type='text'>Cycle through all files in a subdirectory</title><content type='html'>I recently signed up for the perl Ironman challenge at &lt;a href=&quot;http://www.enlightenedperl.org/ironman.html&quot; target=&quot;_blank&quot;&gt;http://www.enlightenedperl.org/ironman.html&lt;/a&gt;.&amp;nbsp; I&#39;ve had this blog sitting around for a long time (maybe 7 years) but never posted to it.&amp;nbsp; I&#39;ve been using my &lt;a href=&quot;http://melick.wordpress.com/&quot; target=&quot;_blank&quot;&gt;blog &quot;The Red Stallion Patrol&quot;&lt;/a&gt; for all my posts, but wanted to separate out my perls of wisdom.&amp;nbsp; This is a cross post of an item I posted 4 days ago.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s the code I use to cycle through all the files in a sub-directory, make sure they exist and have a non-zero size. If this all passes, process the file.&amp;nbsp; I use this pretty frequently at work to do &quot;something interesting&quot; with all files in a sub-directory (folder to you windows users) that&amp;nbsp;may contain any number of files (probably added to daily) of a certain type.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;#!/usr/bin/perl&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;use warnings;&lt;br /&gt;use strict;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;my $DIR = &quot;/some/directory&quot;;&lt;br /&gt;my $inputfile = $ARGV[0];&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;# ----- Go through all the files in a directory&lt;br /&gt;my $InputDir = join(&quot;/&quot;, $DIR, $inputfile);&lt;br /&gt;opendir (ARCHIVE, $InputDir ) or die &quot;can&#39;t opendir ARCHIVE $InputDir: $!&quot;;&lt;br /&gt;my @InputDirFiles = grep { -f }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # select files only&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map { &quot;$InputDir/$_&quot; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # IMPORTANT - prepend directory name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; grep { ( $_ ne &#39;.&#39; ) and ( $_ ne &#39;..&#39; ) } # throw out dots entries&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; readdir ARCHIVE;&lt;br /&gt;closedir ( ARCHIVE ) or warn &quot;can&#39;t closedir ARCHIVE: $!&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;local $, = &quot;\n&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;foreach my $CurrentFile (@InputDirFiles) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- Does the file exist?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (my $dev,my $ino,my $mode,my $nlink,my $uid,my $gid,my $rdev,my $size,my $atime,my $mtime,my $ctime,my $blksize,my $blocks)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = stat(&quot;$CurrentFile&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (-e _) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf &quot;\t$CurrentFile exists.\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (-z _) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf &quot;\t\tIt is zero bytes\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (-s _) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf &quot;\t\tIt is $size bytes long\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- at this point the file exists and has size.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you could open it and have your way with it. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf &quot;\tDidn&#39;t find $CurrentFile\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ----- You could also wait&amp;nbsp;until this point&amp;nbsp;to&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; open it and have your way with it.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;}&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lylemelick.blogspot.com/feeds/4162029613781202158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12259560/4162029613781202158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default/4162029613781202158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default/4162029613781202158'/><link rel='alternate' type='text/html' href='http://lylemelick.blogspot.com/2012/05/i-recently-signed-up-for-perl-ironman.html' title='Cycle through all files in a subdirectory'/><author><name>Lyle</name><uri>http://www.blogger.com/profile/01066775945889789613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuBtc3JPUjJOq0Jv5IVF3RrCTcdUtaMBNahzVlIb8lhKmylOE5b8e8Wr4c2atqfS-BZdJC7o7mMmxPYLhloj-Md62SMrz8NUCA6QioRQ6ImBtB95cLRlm1F08H5cJtJAg/s220/2012-05-18+07.59.42.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12259560.post-8622593928448278036</id><published>2012-04-28T14:22:00.002-04:00</published><updated>2012-05-18T08:13:01.525-04:00</updated><title type='text'>Hello?   </title><content type='html'>Blogger recently reached out to me to reactivate my old blogger blog.&amp;nbsp; The one I haven&#39;t ever posted to, apparently.&amp;nbsp; I have a &lt;a href=&quot;http://lylemelick.tumblr.com/&quot; target=&quot;_blank&quot;&gt;tumblr&lt;/a&gt; and a &lt;a href=&quot;http://melick.wordpress.com/&quot; target=&quot;_blank&quot;&gt;wordpress&lt;/a&gt; blog I never post to.&amp;nbsp; What makes me think I&#39;ll use this one?</content><link rel='replies' type='application/atom+xml' href='http://lylemelick.blogspot.com/feeds/8622593928448278036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12259560/8622593928448278036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default/8622593928448278036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12259560/posts/default/8622593928448278036'/><link rel='alternate' type='text/html' href='http://lylemelick.blogspot.com/2012/04/blogger-recently-reached-out-to-me-to.html' title='Hello? &lt;tap&gt; &lt;tap&gt; &lt;tap&gt;'/><author><name>Lyle</name><uri>http://www.blogger.com/profile/01066775945889789613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuBtc3JPUjJOq0Jv5IVF3RrCTcdUtaMBNahzVlIb8lhKmylOE5b8e8Wr4c2atqfS-BZdJC7o7mMmxPYLhloj-Md62SMrz8NUCA6QioRQ6ImBtB95cLRlm1F08H5cJtJAg/s220/2012-05-18+07.59.42.jpg'/></author><thr:total>0</thr:total></entry></feed>