Perl complains
Like that?
/tmp>cat at.pl
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
say '@foo!';
say "\@bar!";
say "@bang!";
/tmp>perl at.pl
Possible unintended interpolation of @bang in string at at.pl line 9.
Global symbol "@bang" requires explicit package name (did you forget t
+o declare "my @bang"?) at at.pl line 9.
Execution of at.pl aborted due to compilation errors.
/tmp>
Read the error messages. They are not just decoration. Think about what perl is trying to tell you. Hint: Search for the error messages in perldiag.
Update:
You can have perl do the lookup for you:
/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 st
+ring
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 happ
+ened
to the array you apparently lost track of.
Global symbol "@bang" requires explicit package name (did you forget t
+o 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>
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
|