#!/usr/bin/perl -s use strict; use Data::Dumper; my @x = qw(a c e g); my $var = {'a'=>"z", 'b'=>"y", 'c'=>"x", 'd'=>"w", 'e'=>"v", 'f'=>"u", 'g'=>"t", 'h'=>"s"}; my $y = "e"; foreach $var->{$y} (@x){ print "$y = $var->{$y}\n"; $y = $var->{$y}; } die Dumper($var); #### syntax error at ./foreach2var.pl line 9, near "$var->" syntax error at ./foreach2var.pl line 12, near "}" Execution of ./foreach2var.pl aborted due to compilation errors. #### e = a a = c c = e e = g $VAR1 = { 'e' => 'g', 'a' => 'c', 'd' => 'w', 'c' => 'e', 'h' => 's', 'b' => 'y', 'g' => 't', 'f' => 'u' }; #### #!/usr/bin/perl -s use strict; use Data::Dumper; my @x = qw(a c e g); my $var = {'a'=>"z", 'b'=>"y", 'c'=>"x", 'd'=>"w", 'e'=>"v", 'f'=>"u", 'g'=>"t", 'h'=>"s"}; my $y = "e"; while($var->{$y} = shift @x){ print "$y = $var->{$y}\n"; $y = $var->{$y}; } die Dumper($var);