in reply to Byte Buckets JAPH

I'm not entirely sure what this is supposed to do, but on v5.6.0 built for darwin, it prints T`^^JYZ^RM^[M^URJLTM^, which probably wasn't what was intended.

Replies are listed 'Best First'.
Re: Re: Bite Buckets JAPH
by davido (Cardinal) on Sep 06, 2003 at 01:14 UTC
    Yep,that's what I'm talking about. Your garbled output is a result of a difference between builds of Perl. I took advantage of something internal to Perl that differs from version to version. Success with this JAPH seems to be 5.8.0 specific. Them's the breaks! ;) But now having tested it on half a dozen 5.8.0 systems (of different architecture and OS), I think that the primary constraint is that it has to be run under 5.8.0. Thanks for checking in.

    Dave

    "If I had my life to do over again, I'd be a plumber." -- Albert Einstein

      And to further confirm that it's only working on 5.8.0, it doesn't work on 5.8.1 either ;-)

      Liz

      Update:
      With the environment variable PERL_HASH_SEED set to 0, the output is indeed "JUST ANOTHER PERL HACKER". If set to another value, it is always the same, but definitely not Just Another Perl Hacker. Without the environment variable set, the output is different each time you run it.

      Since I can't refer to the new documentation of "perlrun" on perldoc.com, I'll just pit it here for those of you who are interested:

      PERL_HASH_SEED
      (Since Perl 5.8.1.) Used to randomise Perl's internal hash function. To emulate the pre-5.8.1 behaviour, set to an integer (zero means exactly the same order as 5.8.0). "Pre-5.8.1" means, among other things, that hash keys will be ordered the same between different runs of Perl. The default behaviour is to randomise unless the PERL_HASH_SEED is set. If Perl has been compiled with "-DUSE_HASH_SEED_EXPLICIT", the default behaviour is not to randomise unless the PERL_HASH_SEED is set. If PERL_HASH_SEED is unset or set to a non- numeric string, Perl uses the pseudorandom seed supplied by the operating system and libraries. This means that each different run of Perl will have a different ordering of the results of keys(), values(), and each(). See "Algorithmic Complexity Attacks" in perlsec for more information.

      PERL_HASH_SEED_DEBUG
      (Since Perl 5.8.1.) Set to "1" to display (to STDERR) the value of the hash seed at the beginning of execution.

      FInally, setting $ENV{PERL_HASH_SEED}=0 during execution does not have the desired effect: the environment variable is checked during startup of Perl, looong before you can set Perl's copy of the environment variable.

        liz,
        Not having 5.8.1 handy, I would be interested in seeing if the compile time option in reference to hashes makes a difference in how this works. I believe there is a way to "restore" the 5.8.0 way hashes work from what I have heard?

        If I have guessed correctly as to the nature of the JAPH, it is highly unlikely that it would be possible to make the JAPH version independent without increasing quite a bit of the code.

        Cheers - L~R