my (@Cdevices,@Mdevices); push (@Cdevices, 'UnitID1', 'fileno1'); push (@Cdevices, 'UnitID2', 'fileno2'); # <- @Cdevices is now qw(UnitID1 fileno1 UnitID2 fileno2) push (@Cdevices, 'UnitID3', 'fileno3'); # <- and so on push (@Mdevices, \@Cdevices); # this makes it clear: use Data::Dumper; print Dumper(\@Cdevices); print Dumper(\@Mdevices); for my $ref (@Mdevices) { print $ref->[0],"\n"; }