in reply to Re^4: Recalcitrant placeholders
in thread Recalcitrant placeholders
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
|
|---|