in reply to Modern Perl Book "Paquito" Example Question
Welcome to the Monastery, Ayber!
This is a perfect example of why *all* of your code should have use warnings; and use strict; at the very top. It would point you to the err of your ways:
use warnings; use strict; $_ = 'My name is Paquito'; say if /My name is/; s/Paquito/Paquita/; tr/A-Z/a-z/; say;
Output:
Bareword "say" not allowed while "strict subs" in use at it.pl line 5. Bareword "say" not allowed while "strict subs" in use at it.pl line 10 +. Execution of it.pl aborted due to compilation errors.
The say() function isn't available by default, which is why nothing happens. Without use strict;, no errors are triggered/displayed, and the code blindly just carries on skipping the say() lines.
To fix the problem, add either use feature 'say';, use v5.10; or use Modern::Perl to include the function:
use warnings; use strict; use feature 'say'; $_ = 'My name is Paquito'; say if /My name is/; s/Paquito/Paquita/; tr/A-Z/a-z/; say;
Output:
My name is Paquito my name is paquita
You could also avoid requiring external functions if you changed say() to print():
use warnings; use strict; $_ = 'My name is Paquito'; print "$_\n" if /My name is/; s/Paquito/Paquita/; tr/A-Z/a-z/; print "$_\n";
Note I've left the use of the default variable ($_) in place. Most definitely not the way I'd use it in any normal situation, but I digress.
|
|---|