Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Filehandles vs Uninitialized Values in pattern match

by naikonta (Curate)
on Nov 23, 2007 at 16:35 UTC ( #652607=note: print w/ replies, xml ) Need Help??


in reply to Filehandles vs Uninitialized Values in pattern match

The two subroutines in the code below achieve the same thing in different way. As others have pointed out, the mode +< (or O_RDWR with Fcntl module) is the one you need instead of +>> (the latter is still possible, just harder) for the first sub. The second sub uses Tie::File module that makes file operation is as simple as array operation.

The code (file locking is omitted intentionally):

#!/usr/bin/perl use strict; use warnings; my($rdwr_file, $tie_file) = @ARGV; with_rdwr(); with_tiefile(); sub with_rdwr { open DAT, "+<$rdwr_file" or die "can't open $rdwr_file: $!\n"; my $last = (<DAT>)[-1]; if ($last =~ /(\d+)/) { my $new = $1 + 1; seek DAT, 0, 2 or die "Can't seek in $rdwr_file: $!\n"; print DAT $new, "\n"; print "new value for $rdwr_file: $new\n"; } close DAT; } sub with_tiefile { use Tie::File; my @lines; tie @lines, 'Tie::File', $tie_file or die "can't tie $tie_file: $! +\n"; my $last = $lines[-1]; if ($last =~ /(\d+)/) { # sure, testing on $lines[-1] saves a line my $new = $1 + 1; push @lines, $new; print "new value for $tie_file: $new\n"; } untie @lines; }

The run:

$ echo 0 > rdwr $ echo 0 > tie $ cat rdwr 0 $ cat tie 0 $ perl prog.pl rdwr tie new value for rdwr: 1 new value for tie: 1 $ cat rdwr 0 1 $ cat tie 0 1 ... and some executions later.. $ cat rdwr 0 1 2 3 4 5 $ cat tie 0 1 2 3 4 5

Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!


Comment on Re: Filehandles vs Uninitialized Values in pattern match
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://652607]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (10)
As of 2014-12-18 06:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (43 votes), past polls