/tmp>cat at.pl #!/usr/bin/perl use strict; use warnings; use diagnostics; use feature 'say'; say '@foo!'; say "\@bar!"; say "@bang!"; /tmp>perl at.pl Possible unintended interpolation of @bang in string at at.pl line 10 (#1) (W ambiguous) You said something like '@foo' in a double-quoted string but there was no array @foo in scope at the time. If you wanted a literal @foo, then write it as \@foo; otherwise find out what happened to the array you apparently lost track of. Global symbol "@bang" requires explicit package name (did you forget to declare "my @bang"?) at at.pl line 10. Execution of at.pl aborted due to compilation errors (#2) (F) You've said "use strict" or "use strict vars", which indicates that all variables must either be lexically scoped (using "my" or "state"), declared beforehand using "our", or explicitly qualified to say which package the global variable is in (using "::"). Uncaught exception from user code: Global symbol "@bang" requires explicit package name (did you forget to declare "my @bang"?) at at.pl line 10. Execution of at.pl aborted due to compilation errors. /tmp>