Richard Lee wrote: > Rob Dixon wrote: >> Richard Lee wrote: >> >>> I would imagine linux's head command can be replaced w/ chop >>> I asked this because I have a filehandle which was, >>> >>> open $source, '/tmp/server.txt' ( and no doing head -1 /tmp/server.txt >>> is not an option since I need to go through some other stuff >>> before i need to issue below command ) >>> >>> and I wanted to do >>> >>> my $top = `head -1 $source` >>> my $bottom = `tail -1 $source` >>> >>> but I realized I cannot do $source in back tick. >>> >>> so I imagine i can do >>> >>> my $top = chop $source; >>> >>> But what about the $bottom one? >>> >> >> The chop() function simply removes the last character from a string and >> returns it. Since $source isn't a string you would get an error. Your best >> bet is likely to be the Tie::File module. For instance >> >> use strict; >> use warnings; >> >> use Tie::File; >> >> tie my @file, 'Tie::File', '/tmp/server.txt' or die $!; >> >> my ($top, $bottom) = @file[0, -1]; >> >> HTH, >> >> Rob >> > > > when you are doing it to filehandle vs array, which consumes more memory? > > my source file is about 100,000 lines... > > open my $source, 'tmp/server.txt' or die !$; > > VS > tie my @file, 'Tie::File', '/tmp/server.txt' or die $!;
Neither of them use any significant memory until you start reading from the file. Unless you mess about with file positioning with seek() and tell(). the only way to retrieve the last record in a file using a standard file handle is to read all the way through it one line at a time. The documentation for Tie::File says this: > The file is *not* loaded into memory, so this will work even for > gigantic files. So it is likely to be best for your needs. However, you should not worry about speed or memory usage until you have written the clearest program you can and then find that it consumes too many resources. HTH, Rob -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/