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


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

The thing seems rather unclear. Could you post the code that gives you these problems?

Thanks, Michele.

  • Comment on Re: Script crazy after a lot of testing and terminating

Replies are listed 'Best First'.
Re: Re: Script crazy after a lot of testing and terminating
by bh_perl (Monk) on Jul 22, 2003 at 09:22 UTC
    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

      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..