Not exactly sure about what you are doing, but normally these hash => value pairs are passed as essentially an array of paired values - this is not a string. Don't confuse what the source code looks like with what the subroutine or method sees. To get $new-role-name to be translated into a value instead of this literal string, you just need "" instead of '' in the hash. Oh, this '=>' thingie is called a "fat comma" and as you can see below that is pretty much what happens, ie. works like a comma.
#!/usr/bin/perl -w use strict; my %hash = ( 'description' => '$description', 'new-role-name' => '$new-role-name', 'role-name' => '$role-name', ); x(%hash); #this makes param,value pairs from %hash print "\n"; my $abc = 99999; x("value" => 12, "xyz" => "$abc"); sub x { my @input = @_; print "array representation: @input\n"; my %hash = @_; print "hash is:\n"; foreach (keys %hash) { print "$_ => $hash{$_}\n"; } } __END__ prints: array representation: role-name $role-name new-role-name $new-role-nam +e description $description hash is: new-role-name => $new-role-name role-name => $role-name description => $description array representation: value 12 xyz 99999 hash is: value => 12 xyz => 99999
In reply to Re: Transform hash elements into a string
by Marshall
in thread Transform hash elements into a string
by perlpal
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |