http://qs321.pair.com?node_id=11134687


in reply to Re^3: Recalcitrant placeholders
in thread Recalcitrant placeholders

Perl complains

Replies are listed 'Best First'.
Re^5: Recalcitrant placeholders
by afoken (Chancellor) on Jul 06, 2021 at 21:39 UTC
    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". ;-)