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