Re: assign default value to variables I assign from split

[email protected] (Richard Lee)
Newsgroups perl.beginners
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.