my $input = 'a6.55.45.0e';; my( $hex = $input ) =~ tr[.][]d;; ## Remove dots;; my $revHex = reverse $hex;; my $packedInt = pack 'h*', $revHex;; my @tuners;; vec( $packedInt, $_, 1 ) and push @tuners, $_ for 0 .. 31;; print "@tuners";; 1 2 3 8 10 14 16 18 20 22 25 26 29 31 #### sub mask2list { ( my $hex = shift ) =~ tr[.][]d; my $packed = pack 'h*', scalar reverse $hex; map{ vec( $packed, $_, 1 )? $_ : () } 0 .. 31; } my @tuners = mask2list( 'a6.55.45.0e' ); print "@tuners"; 1 2 3 8 10 14 16 18 20 22 25 26 29 31