#if one desires to pass a scalar reference into a sub-routine, #the easiest way to assign a local scalar to the contents of the scalar reference is... subroutine(\$scalar); sub subroutine { my $subroutine_scalar = ${$_[0]}; #note you need the {} brackets, or this doesn't work! print "$subroutine_scalar\n"; }
#if one desires to pass an array reference into a sub-routine, #the easiest way to assign a local array to the contents of the array reference is... subroutine(\@array); sub subroutine { my @subroutine_array = @{$_[0]}; #note you need the {} brackets, or this doesn't work! print "in subroutine: " . join(' ', @subroutine_array) . "\n"; } #if one desires to pass a hash reference into a sub-routine, #the easiest way to assign a local hash to the contents of the hash reference is... subroutine(\%hash); sub subroutine { my %subroutine_hash = %{$_[0]}; #note you need the {} brackets, or this doesn't work! print "in subroutine: " . join(' ', keys (%subroutine_hash)) . "\n"; } all above works fine and is easy for me to understand. its below that im having difficulty with... #seeing the 'pattern' of behavior for $, @, % variable types... #i, not knowing any better, assumed the same should also be able to be done for & (subroutines) #i therefore tried a test to see if i could assign a new subroutine to equal a de-referenced subroutine reference #i literally copied the same code as used above, but used the & operator instead of ($, @, %) #this did not give the expected result... perl reported: #hello CODE(0x237dbc) #Can't modify non-lvalue subroutine call at D:\_junk\TEST.PL line 6. sub subroutine { print "hello @_\n" } sub2(\&subroutine); sub sub2 { &sub3 = &{$_[0]}; #problem is obviously here with this line, seems its not being dereference sub3('world'); }
_______________________________________________ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs