use strict; use warnings; my $dir = q{/some/path/to/afile}; print qq{\nMatching $dir\n}; print qq{\nWith parentheses, list context\n}; my ($fileName) = $dir =~ m{([^/]+)$}; print defined $fileName ? qq{-->$fileName<--\n} : qq{Not defined\n}; print qq{\nWithout parentheses, scalar context\n}; $fileName = $dir =~ m{([^/]+)$}; print defined $fileName ? qq{-->$fileName<--\n} : qq{Not defined\n}; $dir = q{/some/path/with/no/file/}; print qq{\nMatching $dir\n}; print qq{\nWith parentheses, list context\n}; ($fileName) = $dir =~ m{([^/]+)$}; print defined $fileName ? qq{-->$fileName<--\n} : qq{Not defined\n}; print qq{\nWithout parentheses, scalar context\n}; $fileName = $dir =~ m{([^/]+)$}; print defined $fileName ? qq{-->$fileName<--\n} : qq{Not defined\n}; #### Matching /some/path/to/afile With parentheses, list context -->afile<-- Without parentheses, scalar context -->1<-- Matching /some/path/with/no/file/ With parentheses, list context Not defined Without parentheses, scalar context --><--