I'm not clear whether your question has been answered yet. To further clarify your code, I've reindented it and added some more diagnostics that show
the order that values will take for a given hash:
#!perl -w
use strict;
use Data::Dumper;
my @r = ('R0');
my @routers =$r[0];
my @router = ( "R0", "R2", "R3" );
my %fpc = (
R0 => { fpc1 => 5, fpc2 => 4, },
R2 => { fpc1 => 3, fpc2 => 2, },
R3 => { fpc1 => 1, fpc2 => 0, },
);
my %pic = (
R0 => { pic1 => 5, pic2 => 4, },
R2 => { pic1 => 3, pic2 => 2, },
R3 => { pic1 => 1, pic2 => 0, },
);
@router = ( "R0", "R2", "R3" );
for my $rh (@routers) {
my $r = shift(@router);
print "value of r is $r\n";
print "Processing routers in order " . join(",", values %{ $fp
+c{$r} }), "\n";
OUTER: for my $f (values %{ $fpc{$r} }) {
print "Processing pic-elements for $r in order " . join( "
+,", values %{ $pic{$r} }), "\n";
INNER: for my $p (values %{ $pic{$r} }) {
print "request chassis pic offline fpc-slot $f pic-slo
+t $p\n";
next OUTER;
}
}
}
Note that between runs of the program, the order can change for every hash. The best way to work with this is to save the order you want in a separate list:
c:\Users\Corion\Projekte>perl -w tmp.pl
value of r is R0
Processing routers in order 5,4
Processing pic-elements for R0 in order 5,4
request chassis pic offline fpc-slot 5 pic-slot 5
Processing pic-elements for R0 in order 5,4
request chassis pic offline fpc-slot 4 pic-slot 5
c:\Users\Corion\Projekte>perl -w tmp.pl
value of r is R0
Processing routers in order 5,4
Processing pic-elements for R0 in order 4,5
request chassis pic offline fpc-slot 5 pic-slot 4
Processing pic-elements for R0 in order 4,5
request chassis pic offline fpc-slot 4 pic-slot 4
c:\Users\Corion\Projekte>perl -w tmp.pl
value of r is R0
Processing routers in order 5,4
Processing pic-elements for R0 in order 4,5
request chassis pic offline fpc-slot 5 pic-slot 4
Processing pic-elements for R0 in order 4,5
request chassis pic offline fpc-slot 4 pic-slot 4
c:\Users\Corion\Projekte>perl -w tmp.pl
value of r is R0
Processing routers in order 5,4
Processing pic-elements for R0 in order 5,4
request chassis pic offline fpc-slot 5 pic-slot 5
Processing pic-elements for R0 in order 5,4
request chassis pic offline fpc-slot 4 pic-slot 5
In your case, I would save the list of numbers like the following:
my @items = values ${ $fpc{$r} };
for my $f (@values) {
...
}