[Chicago-talk] filehandles? what am I doing wrong?

Brian Katzung briank at kappacs.com
Sun Dec 23 15:39:42 PST 2007


That will only help if your files are guaranteed to take longer than one 
second to process.

You might want to consider something like File::Temp or an incrementing 
suffix.

   - Brian

Richard Reina wrote:
> humbling! Can't believe I missed that.  Thank you very very much Don.
> 
> */Don Drake <don at drakeconsult.com>/* wrote:
> 
>     The date is setup only once at the beginning of the script, so you
>     only get one file.
> 
>     Put this in the while loop:
>     my ($yr, $mo, $day, $hr, $min, $sec) = (localtime)[5,4,3,2,1,0];
>     my $date = $sec . $min . $hr . $day . ($mo + 1) . ($yr + 1900);
> 
>     -Don
> 
>     On Dec 23, 2007, at 10:31 AM, Richard Reina wrote:
> 
>      > I have written a short script that reads data from a file and
>      > attempts to separate the data into separate a file when it sees
>      > ####### and !!!!!!! as delimiters. The problem I am having is that
>      > the script opens writes and closes the first file with no problem
>      > but not additional new files for the rest of the occurrences of
>      > ####### and !!!!!!!
>      >
>      > #!/usr/bin/perl -w
>      > # test_file_writer.pl
>      >
>      > open(DEV, "
>      >
>      > # get a nice date string for naming an email file
>      > my ($yr, $mo, $day, $hr, $min, $sec) = (localtime)[5,4,3,2,1,0];
>      > my $date = $sec . $min . $hr . $day . ($mo + 1) . ($yr + 1900);
>      >
>      > while($_ = ) {
>      >
>      > print $_; # show the output)
>      >
>      > if ($_ =~ /#######/) {
>      >
>      > #this is the beginning of a new file
>      > print "THIS IS THE BEGINNING OF A NEW FILE\n";
>      > $write_file = "y";
>      > open(NEW_FILE, ">NEW_FILE" . $date) || die "CANT OPEN
>      > NEW_FILE: $!\n";
>      >
>      > }
>      >
>      > if ($write_file eq "y") {
>      >
>      > print NEW_FILE $_;
>      >
>      > } #end of if
>      >
>      > if ($_ =~ /!!!!!!!/) {
>      >
>      > print "Closing File\n";
>      > close (NEW_FILE) || die "CAN'T CLOSE NEW_FILE: $!";
>      > $write_file = "n";
>      >
>      > } # end of if
>      >
>      > } # end of while
>      > ## END
>      >
>      > Additionally confusing is that it does not die on open or close like
>      > one would think if it were unable to open and close.
>      >
>      > Here the input file (test_FILEEEEEE):
>      >
>      > #######
>      > richard at rushlogistics.com
>      > this is the body of a file
>      > !!!!!!!
>      > #######
>      > richard at rushlogistics.com
>      > this should be seprate file
>      > !!!!!!!
>      > #######
>      > richard at rushlogistics.com
>      > this should be another serperate file
>      > !!!!!!!
>      > #######
>      > richard at rushlogistics.com
>      > this should be another file
>      > !!!!!!!
>      > #######
>      > richard at rushlogistics.com
>      > and this just another
>      > !!!!!!!
>      >
>      > After the program executes I end up with only 1 new file like
>      > NEW_FILE267523122007 when the script should create 5 of them.
>      >
>      > Any ideas as to where I've gone wrong would be greatly appreciated.
>      >
>      > Thanks,
>      >
>      > Richard
>      >
>      >
>      > Your beliefs become your thoughts. Your thoughts become your words.
>      > Your words become your actions. Your actions become your habits.
>      > Your habits become your values. Your values become your destiny. --
>      > Mahatma Gandhi_______________________________________________
>      > Chicago-talk mailing list
>      > Chicago-talk at pm.org
>      > http://mail.pm.org/mailman/listinfo/chicago-talk
> 
>     _______________________________________________
>     Chicago-talk mailing list
>     Chicago-talk at pm.org
>     http://mail.pm.org/mailman/listinfo/chicago-talk
> 
> 
> 
> 
> Your beliefs become your thoughts. Your thoughts become your words. Your 
> words become your actions. Your actions become your habits. Your habits 
> become your values. Your values become your destiny. -- Mahatma Gandhi
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Chicago-talk mailing list
> Chicago-talk at pm.org
> http://mail.pm.org/mailman/listinfo/chicago-talk

-- 
Brian Katzung, Kappa Computer Solutions, LLC
Leveraging UNIX, GNU/Linux, open source, and custom
software solutions for business and beyond
Phone: 877.367.8837 x1  http://www.kappacs.com



More information about the Chicago-talk mailing list