http://qs1969.pair.com?node_id=45531


in reply to Re: Re: Foreach Complications
in thread Foreach Complications

Could could make this code a lot cleaner. Notably, that mess of splits and data assignments at the top, using `ls` when you should be using readdir, and scoping of variables.

Here's what i came up with after five minutes:
sub PRINT_INFO { my ($netid, $sitename, $sector) = @_; my $DAILY_HEAD = "Date Total"; $,="\t"; #Output Field Separator my $report_type = 'Daily Totals'; my $MARKET = 'PHL'; my $DAILY_PATH = "/data1/$MARKET/reports"; my $BUSY_PATH = "/data1/$MARKET/bhreports"; my $PKD_PATH = "/data1/$MARKET/pkdreports"; my $MISC_PATH = "/data1/$MARKET/miscreports"; my $MDG_PATH = "/data1/$MARKET/mdgreports"; my $cellname = "$sitename Sector $sector"; my $search_string = "\Q$netid"; print "$cellname\n"; opendir DIR, $DAILYPATH; my @all_readable_files = grep { ($_ ne '.') && ($_ ne '..') && ($_ + !~ /\.Z//) } readdir DIR; closedir DIR; print "$DAILY_HEAD\n"; my $file; foreach $file (@all_readable_files) { my $date = substr ($file, 0 , (index $file, '_')); open(FILE, "$DAILY_PATH/$file"); @DATA=<FILE>; @result = grep { (index $_, $search_string) > -1 } @DATA; for ( $i = 0; $i <= $#results; $i++ ) { my $info = (split(' ', $result[$i]))[7]; print $date , $info . "\n"; } close FILE; } }

Replies are listed 'Best First'.
(jeffa) Re: Re: Re: Re: Foreach Complications
by jeffa (Bishop) on Dec 07, 2000 at 22:18 UTC
    Good stuff - but don't code Perl like C :
    for my $i (0..$#results) { my $info = . . . . . . . }
    It took me a while to get used to it - it's almost too easy, but think of the carpel-tunnel you'll prevent ;)

    Jeff

    L-LL-L--L-LL-L--L-LL-L--
    -R--R-RR-R--R-RR-R--R-RR
    F--F--F--F--F--F--F--F--
    (the triplet paradiddle)