Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Parser executes trailing comment text on shebang lines

Offen
#1,524 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
74/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
perl
Bereich
compilers

Rechercherichtung

Start with the t/testhelp shebang reproduction and compare its behavior across the JVM and interpreter backends. Run the focused command, then the relevant subprocess-response cases in t/gzip.t. Done means the complete shebang comment is discarded, @ARGV retains the three arguments, and the CGI-Compress-Gzip response tests pass without annotation or argument text.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Summary

PerlOnJava does not fully discard a shebang/comment line when it contains a second # comment marker. Both backends execute text from the trailing Perl::Critic annotation as Perl code/output and consequently mishandle the script arguments that follow.

Reproduction

CGI-Compress-Gzip 1.03 contains t/testhelp, whose first line is:

#!perl -w ## no critic (RequireVersionVar)

Run the helper with its normal test arguments:

jperl -Iblib/arch -Iblib/lib t/testhelp -DHTTP_ACCEPT_ENCODING=gzip simple 'Hello World!'

Expected, as on standard Perl: a gzip response for Hello World!.

Actual on both the JVM and interpreter backends: the response is uncompressed, reports that the user agent does not accept gzip, and its body begins with:

nocritic(RequireVersionVar)-DHTTP_ACCEPT_ENCODING=gzipsimpleHello World!

The trailing comment contents and command-line arguments must not become program output. Perl should discard the complete shebang/comment line before compiling the script.

CPAN evidence

In CPAN random run 20260925-103132-20451, CGI-Compress-Gzip 1.03 failed 21 of 44 subtests in t/gzip.t on the JVM backend. The subprocess-response cases are directly caused by this parser defect. The same source passes all 44 tests under the standard-Perl oracle.

The focused helper reproduction also fails on the interpreter backend, so this is shared parser behavior rather than a JVM-only emission issue.

Acceptance criteria

  1. A script beginning with #!perl -w ## no critic (RequireVersionVar) does not emit any part of that line.
  2. Its @ARGV remains -DHTTP_ACCEPT_ENCODING=gzip, simple, and Hello World! when launched with those arguments.
  3. The focused reproducer passes on standard Perl, PerlOnJava JVM, and PerlOnJava interpreter backends.
  4. CGI-Compress-Gzip's subprocess-response tests no longer contain the annotation or argument text in their bodies.
Vorherrschende Sprache
Perl
Sterne
64
Forks
6
Ø Merge
4 Std. 55 Min.
Gemergte PRs (30 T.)
169

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus fglock/PerlOnJava

Alle Issues in fglock/PerlOnJava

Ähnliche Issues

Weitere Issues zu Perl

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.