use strict; use warnings; use Tie::RegexpHash; my $regex1=qr/^\d+$/; my $regex2=qr/^\D+$/; my $regex3=qr/^.+$/; my %functions; tie %functions, 'Tie::RegexpHash'; %functions = ( $regex1 => sub {print "Number\n"}, $regex2 => sub {print "Not number\n"}, $regex3 => sub {print "Mixed\n"} ); while (<>){ last if /^$/; $functions{$_}->(); }