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


in reply to Re: Script crazy after a lot of testing and terminating
in thread Script crazy after a lot of testing and terminating

This is my code, if you means my script:
while (1) { my @entries = (); my $ref_entry = {}; $/ = ""; open( F, " $cat test |" ) or warn("Can't executed $cat\n"), next; while (<F>) { $\ = ""; next if $_ =~ /^\d+:/; print("$_\n"); foreach ( split /\n/ ) { $$ref_entry{$1} = default($2) if /^(\w +?)\s+:.(\d+)/; $$ref_entry{$1} = default($2) if /^(\w +?)\s+:.'(.*)'/; $$ref_entry{$1} = default($2) if /^(\w +?)\s+:.>(.*)</; print "$1 ==> $2\n"; } push @entries, $ref_entry; } close(F); calreport(@entries); splice(@entries); }

update (broquaint): removed <pre> tags and added <code>, also perltidyed code to avoid unnecessary code wrapping

Replies are listed 'Best First'.
Re: Re: Re: Script crazy after a lot of testing and terminating
by antirice (Priest) on Jul 22, 2003 at 23:34 UTC

    Well, your $/ = ""; causes your while (<F>) to slurp the entire file into $_ and the while statement executes once. Setting $\ = ""; is somewhat unncecessary as that's its default (unless you run with -l). The structure of your foreach is...umm...interesting. Splicing the array is unnecessary since it falls out of scope at the end of the outer while. I don't know what $cat contains...I suspect it's a program but? Does the program return different data each time it's called? Beyond that, what is this script doing that you aren't expecting?

    antirice    
    The first rule of Perl club is - use Perl
    The
    ith rule of Perl club is - follow rule i - 1 for i > 1

      Hi, Thanks for your advise, Right now my perl is back... I have re-run my perl step by step and replace all the unnecessary items then it's OK... Might be because of them..