LMPX.COM |
Home | Linux | Mysql | PHP | XML | ||
|
|
|||
From: Richard Lee Date: Wed May 14 16:17:40 2008 Subject: Re: assign default value to variables I assign from split
John W. Krahn wrote: > Richard Lee wrote: >> Dr.Ruud wrote: >>> >>> But better stop guessing and let Richard answer. >> >> yes, variables are particular names and later I wanted to refer back >> by variable names. >> >> However, for now I have done this so far so I just added as array >> instead of breaking out by var names.. >> -- code is incomplete (meaning I haven't finished yet) -- >> >> use warnings; >> use strict; >> use Data::Dumper; >> >> my $directory = q#/home/server1/arch#; >> my @array = qx/ls -tr $directory | tail -1/; > > You are only getting one file name (tail -1) so why are you assigning > it to an array? It would be more efficient to do that directly in > perl. Also you haven't removed the newline. > > >> my @hh; >> for ( @array ) { >> my $file = $_; > > Usually written as: > > for my $file ( @array ) { > > Since @array only has one file name in it why do you need the loop? > > >> open FILE, "ls -tr | zcat -d $directory/$file |", or die qq/you > > My version of zcat does not have a -d switch, what does it do on your > system? It appears that "ls -tr | " in front of zcat is superfluous? > What do you think it will do there? > > >> truly suck $!\n/; >> my $count; >> my %hh; >> while (<FILE>) { >> chomp; >> next if /^$/; >> next if /^#/; >> >> my @array = map $_||'default', (split > > Why does this array have the same name as the other array in file scope? > > >> /\|/)[3,4,6,7,12,40,41,42,43,46,56,64]; >> next if $array[0] eq 'default'; >> $array[10] =~ s/\,/\-/g; > > More efficient as: > > $array[10] =~ tr/,/-/; > > >> push @hh, \@array; >> } >> close FILE; > > When you close a piped open you should verify that the pipe closed > correctly: > > close FILE > or warn $! ? "Error closing ls pipe: $!" > : "Exit status $? from ls"; > > >> } >> >> system("clear"); >> print >> "===================================================================================================\n\n"; >> >> >> my %missing_address; >> my %duration_report; >> >> for (@hh) { >> my $yahoo = $_; > > Usually written as: > > for my $yahoo ( @hh ) { > > >> $missing_address{$$yahoo[1]}++ if $$yahoo[8] =~ /^default$/ and >> $$yahoo[0] != m/espn|google|msn/; >> $$yahoo[4] += > > $$yahoo[] is usually written as $yahoo->[]. > > $$yahoo[8] =~ /^default$/ is usually written as $yahoo->[8] eq 'default'. > > $$yahoo[0] != m/espn|google|msn/ is incorrect, you probably meant > $yahoo->[0] !~ m/espn|google|msn/. > > >> } >> >> if (%missing_cics) { >> for (keys %missing_address) { >> print "MISSING ADD: $_ : $missing_address{$_} \n"; >> } >> } >> >> for (keys %duration_report) { >> print "total duration $_ : $duration_report{$_}\n"; >> } > > > John thanks for pointing things out.. I am going to finish this script tonight and incoporate correction and post.. thank you so much
| Navigate in group perl.beginners at sever nntp.perl.org | |
| Previous | Next |
| © No Copyright You are free to use Anything |
Site Maintained by PHP Developer
Powered By PHP Consultants |