[EMAIL PROTECTED] wrote:
This is going to be a head-slapper, I know, but it's late and my brain
hurts... I've got a script that has a sub that accepts a hash of
arguments, one of which happens to be an array. If I pass the array as a
reference, everything works fine.
Now for the head slapping part, how do I handle things INSIDE the sub so
I don't have to pass the array as a reference? Code and desired output
are below.
Thanks,
Deane
use strict;
use warnings;
sub do_smthng{
my %args = ( -s1 => undef,
-s2 => undef,
-ar => undef,
@_
);
print " s1: $args{-s1}\n";
print " s2: $args{-s2}\n";
print "ary[0]: $args{-ar}->[0]\n";
print "ary[1]: $args{-ar}->[1]\n";
print "ary[2]: $args{-ar}->[2]\n";
}
my @arg_ary = ( 'alpha', 'bravo', 'charlie' );
do_smthng( -s1 => 42,
-s2 => 96,
-ar => [EMAIL PROTECTED] ); # I wanna lose the "\" here
Desired output:
s1: 42
s2: 96
ary[0]: alpha
ary[1]: bravo
ary[2]: charlie
One approach:
use strict;
use warnings;
main();
sub do_smthng
{
my $var = shift;
print "s1 = $var->{s1}\n";
print "s2 = $var->{s2}\n";
for(my $c = 0; exists $var->{arg_ary}[$c];$c++)
{
print "arg_ary [$c] = $var->{arg_ary}[$c]\n";
}
}
sub main
{
my $x;
@{$x->{arg_ary}} = ( 'alpha', 'bravo', 'charlie');
$x->{s1} = 42;
$x->{s2} = 96;
do_smthng($x);
}
HTH - Lynn.
_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs