if ($vacation_str =~ m!$HOME/$library::common{username}/!i) { ... #### use strict; use warnings; my $HOME = '/usr/home'; my %common; $common{username} = 'roger'; my @str = ( 'cat: cannot open $HOME/$common{username}/filename', "Can't open $HOME/$common{username}/filename !", "This is some other string" ); foreach my $vacation_str (@str) { print "$vacation_str\n"; # case 1 - match exact string if ($vacation_str =~ m!\$HOME/\$common{username}/filename!i) # case 2 - match interpolated string #if ($vacation_str =~ m!$HOME/$common{username}/filename!i) { print "match\n"; } else { print "not match\n"; } } #### cat: cannot open $HOME/$common{username}/filename match Can't open /usr/home/roger/filename ! not match This is some other string not match #### cat: cannot open $HOME/$common{username}/filename not match Can't open /usr/home/roger/filename ! match This is some other string not match