diff options
author | Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> | 2021-12-10 23:57:14 +0000 |
---|---|---|
committer | Karl Williamson <khw@cpan.org> | 2021-12-16 07:56:21 -0700 |
commit | 999b4e2f823bb3637377cedf1548ce7eb27ab6c0 (patch) | |
tree | 74d0050ae573089ce28828419fa6ee4bae65ebc9 /t | |
parent | 59f2a7f55726f30a8eb0e321563f63e1a1672258 (diff) | |
download | perl-999b4e2f823bb3637377cedf1548ce7eb27ab6c0.tar.gz |
Fix function calls being misinterpreted as bareword filehandles
When bareword filehandles are disabled, the parser was interpreting
any bareword as a filehandle, even when immediatey followed by parens:
$ perl -M-feature=bareword_filehandles -le 'print foo()'
Bareword filehandle "foo" not allowed under 'no feature "bareword_filehandles"' at -e line 1.
While with the feature enabled, it works and prints the value returned
by the function:
$ perl -le 'sub foo { @_ } print foo("bar")'
bar
As for filehandles versus functions, a space before the parens makes
the difference:
$ perl -le 'print STDOUT ("bar")'
bar
$ perl -le 'print STDOUT("bar")'
Undefined subroutine &main::STDOUT called at -e line 1.
This fixes the bug by using the already-existing "immediate_paren"
variable to make it consistent when the feature is disabled.
Fixes #19271
Diffstat (limited to 't')
-rw-r--r-- | t/lib/feature/bareword_filehandles | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/t/lib/feature/bareword_filehandles b/t/lib/feature/bareword_filehandles index 7eba75732c..38f8d6530c 100644 --- a/t/lib/feature/bareword_filehandles +++ b/t/lib/feature/bareword_filehandles @@ -484,3 +484,12 @@ OPTIONS fatal Bareword filehandle "FOO" not allowed under 'no feature "bareword_filehandles"' at - line 4. Bareword filehandle "FOO" not allowed under 'no feature "bareword_filehandles"' at - line 5. Execution of - aborted due to compilation errors. +######## +# NAME subroutine calls +use feature "say"; +no feature "bareword_filehandles"; +sub foo {} +print foo(); +say foo(); +-x foo(); +EXPECT |