use Modern::Perl; my $array_ref = ["12'b01", "1333'b011111"]; my @vals = ( "12'b01", "1333'b011111", $array_ref, # one array ref; "aa'b01", "12'b01", { a=>1 }, #hash ref {}, # another hash ref [ "12'b01", "1333'b011111"], #another array ref "12'b01", ); foreach my $val(@vals) { if (ref $val eq 'ARRAY' or ref $val eq 'HASH' ) { say "This is an array or hash ref: Don't process", } elsif ($val =~ /^([\d]+)\'[b]([01]+)$/) { my $strlen = $1; my $binstr = $2; #do things ... say "Found: ", $strlen, ", ", $binstr; } else { say "Wrong kind of input: $val"; } }