A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/Perl/perl5/issues/22759 below:

POD section unexpectedly stops at =cut2 (or =cute in string eval) · Issue #22759 · Perl/perl5 · GitHub

Description
The perl parser is supposed to skip over embedded POD sections. The end of a POD section is marked by a =cut command. However, not every line that starts with =cut is a =cut command. For example: =cute, =cut2, =cut_dry.

The perl parser does not correctly recognize these and, in the case of =cute, behaves differently depending on whether we are in string eval or not.

Steps to Reproduce

use strict;
use warnings;

print "1..9\n";

my $test = 1;

my $foo;
$foo = "";

=pod

=cute
$foo = "not ";

=pod

=cut

print $foo, "ok $test - =cute does not end POD\n";
$test++;

$foo = "";

=pod

=cut2
$foo = "not ";

=pod

=cut

print $foo, "ok $test - =cut2 does not end POD\n";
$test++;

$foo = "";

=pod

=cut_
$foo = "not ";

=pod

=cut

print $foo, "ok $test - =cut_ does not end POD\n";
$test++;

$foo = "not ";

=pod

=cut$cene
$foo = "";

=pod

=cut

print $foo, "ok $test - =cut\$cene ends POD\n";
$test++;

# Same as above, but in string eval.

eval q{
$foo = "";

=pod

=cute
$foo = "not ";

=pod

=cut

print $foo, "ok $test - =cute does not end POD\n";
$test++;

$foo = "";

=pod

=cut2
$foo = "not ";

=pod

=cut

print $foo, "ok $test - =cut2 does not end POD\n";
$test++;

$foo = "";

=pod

=cut_
$foo = "not ";

=pod

=cut

print $foo, "ok $test - =cut_ does not end POD\n";
$test++;

$foo = "not ";

=pod

=cut$cene
$foo = "";

=pod

=cut

print $foo, "ok $test - =cut\$cene ends POD\n";
$test++;
};

print $@ eq "" ? "" : "not ", "ok $test - did not throw an error\n# $@\n";
__END__

Output:

1..9
ok 1 - =cute does not end POD
not ok 2 - =cut2 does not end POD
not ok 3 - =cut_ does not end POD
ok 4 - =cut$cene ends POD
not ok 5 - =cute does not end POD
not ok 6 - =cut2 does not end POD
not ok 7 - =cut_ does not end POD
ok 8 - =cut$cene ends POD
ok 9 - did not throw an error
# 

Expected behavior

1..9
ok 1 - =cute does not end POD
ok 2 - =cut2 does not end POD
ok 3 - =cut_ does not end POD
ok 4 - =cut$cene ends POD
ok 5 - =cute does not end POD
ok 6 - =cut2 does not end POD
ok 7 - =cut_ does not end POD
ok 8 - =cut$cene ends POD
ok 9 - did not throw an error
# 

Perl configuration

This is with v5.40.0, but it should affect all perl versions (except before 5.8.9 the =cute test will probably fail without eval, too).


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4