Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Repeatable rand() and keys() for debugging

by choroba (Cardinal)
on Dec 09, 2022 at 17:30 UTC ( [id://11148688]=note: print w/replies, xml ) Need Help??


in reply to Repeatable rand() and keys() for debugging

It's too late to set the env vars in the begin block, they must be set in the process that runs Perl itself.

This works:

PERL_PERTURB_KEYS=0 PERL_HASH_SEED=1 perl -lE 'say for keys %{ { qw( a + 1 b 2 c 3 d 4 ) } }' c d a b

If you really insist on doing it from Perl itself, the following seems to work:

#! /usr/bin/perl use warnings; use strict; use feature qw{ say }; if (($ENV{PERL_PERTURB_KEYS} // 1) != 0 || ($ENV{PERL_HASH_SEED} // 0) + != 1) { $ENV{PERL_PERTURB_KEYS} = 0; $ENV{PERL_HASH_SEED} = 1; exec $^X, $0, @ARGV } say for keys %{ { qw( a 1 b 2 c 3 d 4 ) } }, @ARGV;

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

Replies are listed 'Best First'.
Re^2: Repeatable rand() and keys() for debugging
by ibm1620 (Hermit) on Dec 09, 2022 at 19:31 UTC
    Thanks - that appears to be working consistently now.

    I can see now why it's more practical to just write a wrapper shell script to set the env vars, and then invoke perl.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11148688]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (4)
As of 2024-03-29 14:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found