c:\@Work\Perl\monks>perl -le "use warnings; use strict; ;; my $filename; ;; Grab($filename); ;; $filename = 'too late'; ;; sub Grab($filename){ print qq{filename is '$filename'}; my @ra = (9, 8, 7); print 'it matches!' if @ra =~ m{ 3 }xms; } " Illegal character in prototype for main::Grab : $filename at -e line 1. Applying pattern match (m//) to @array will act on scalar(@array) at -e line 1. main::Grab() called too early to check prototype at -e line 1. Use of uninitialized value $filename in concatenation (.) or string at -e line 1. filename is '' it matches!