in reply to Re: sorting a hash that's in another file
in thread sorting a hash that's in another file

Hmm. I was a lot more confident until all those bold tags started showing up ;).

Seriously, I'm working on my pattern match now, and it's non-trivial (at least for me), so if anyone has an alternative to doing something like:

open SCRIPT, "script.pl" or die "you scurvy dog"; while (<SCRIPT>) { if ( grep(/\[... insert insane pattern match here ...]%some_hash[... + and here ...]/, $_) ) {

I'm eager to hear. I wish that I could just require the script w the hash in it, but that will not work right.

AH

Replies are listed 'Best First'.
Re: Re: Re: sorting a hash that's in another file
by snax (Hermit) on Jul 23, 2003 at 21:06 UTC
    Well, off the top of my head, I think this would work:
    open SCRIPT, "script.pl" or die "you scurvy dog"; while (<SCRIPT>) { # Find the declaration next unless /\%some_hash/; $hash_declaration = $_; # Now pop out and do another while loop last; } while (<SCRIPT>) { # Keep appending until we reach a semi-colon $hash_declaration .= $_; last if /;/; } eval($hash_declaration);
    But this assumes that you won't have a semi colon in the hash declaration in script.pl. There's a zillion ways to do the reading-in part, too, beyond just a smarter test for when you're done.
      A very inefficient, but valid way of ensuring it works;
      use strict; use warnings; use Data::Dumper; open SCRIPT, "script.pl" or die "Can't open file: $!"; our $hash_declaration=''; our %some_hash; while (<SCRIPT>) { # Find the declaration next unless /\%some_hash/; $hash_declaration = $_; # Now pop out and do another while loop last; } while (<SCRIPT>) { # Keep appending until we reach a semi-colon $hash_declaration .= $_; eval $hash_declaration; last unless $@; } close(SCRIPT); print Data::Dumper->Dumper(\%some_hash);

      .02

      cLive ;-)