Ist es möglich, die aktuelle Quellzeilennummer in Perl zu erhalten? Das Äquivalent in C++ ist __LINE__
.Wie kann ich die Quellzeilennummer in Perl drucken?
Antwort
print "File: ", __FILE__, " Line: ", __LINE__, "\n";
oder
warn("foo");
warn wird auf STDERR gedruckt. – mat
Die __LINE__ Literal wird im Special Literals Abschnitt des perldata man page dokumentiert.
Hinweis gibt es ein gotcha mit
perl -e'warn ("foo")‘
foo auf -e Linie 1.
, wenn es mit einem Newline endet es wird nicht Druck die Zeilennummer
perl -e'warn ("foo \ n")‘
foo
Dies ist dokumentiert in "perldoc -f sterben", aber ist vielleicht leicht zu verpassen in der "perldoc -f warn" -Abschnitt der Referenz zu sterben ...
Dies druckt die Zeile, wo Sie sind, und auch die „Stack“ (Liste der Linien von der anrufenden Programme (Skripte/modules/etc), die an den Ort führen Sie jetzt sind)
while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; }
„verwenden Karpfen“ und mit den verschiedenen Routinen spielen, und Sie erhalten auch eine stack - nicht sicher, ob dieser Weg besser oder schlechter als die von cnd vorgeschlagene Methode "caller" ist. Ich habe die Variablen LINE und FILE (und wahrscheinlich andere ähnliche Variablen) in C und Perl verwendet, um zu zeigen, wo ich beim Debugging in den Code und andere Informationen gekommen bin, aber außerhalb einer Debug-Umgebung wenig Wert gesehen habe.
- 1. Wie kann ich ein zweidimensionales Array in Perl drucken?
- 2. Wie kann ich Listenelemente getrennt durch Zeilenvorschübe in Perl drucken?
- 3. Wie kann ich die Namen der Dateien drucken, die in einem Perl-Einzeiler verarbeitet werden?
- 4. Perl - Generische Unterroutine, die die Datensätze aggregieren und drucken kann
- 5. Wie kann ich eine passende Zeile und die nächsten drei Zeilen in Perl drucken?
- 6. Wie kann ich die ersten bis fünften vorletzten Array-Elemente in Perl drucken?
- 7. Perl drucken Pufferung bündig
- 8. Perl Array Hash Drucken
- 9. Wie kann ich die erstellte PDF-Datei in PHP drucken?
- 10. Wie kann ich Zeitzonen in Perl konvertieren?
- 11. Wie kann ich JSON in Perl parsen?
- 12. Wie kann ich Daten in Perl sortieren?
- 13. Wie kann ich Daten in Perl validieren?
- 14. Wie kann ich die Perl-Konsolenausgabe in einer GUI anzeigen?
- 15. Wie kann ich die Codierung einer Zeichenfolge in Perl erraten?
- 16. Wie kann ich in Perl die Referenzgleichheit prüfen?
- 17. Wie kann ich die Abfragezeit in Perl, DBI anzeigen?
- 18. Wie kann ich die Terminalbreite in Perl abrufen?
- 19. Wie kann ich Typattribute in GDB drucken?
- 20. Wie kann ich Introspektion in Perl durchführen?
- 21. Wie kann ich Komponententests in Perl durchführen?
- 22. Wie kann ich Berechtigungen in Perl löschen?
- 23. Wie deaktiviere ich die Autovivifizierung in Perl?
- 24. Wie kann ich in Perl dynamisch auf STDOUT/STDERR umschalten?
- 25. Drucken "Multi-Dimensional" Array in Perl
- 26. Kann ich in binär drucken?
- 27. Wie kann ich nur einen Unix-Newline in Perl auf Win32 drucken?
- 28. Wie kann ich das Ergebnis von File :: Find in html perl-Skript drucken?
- 29. Wie kann ich Text sofort drucken, ohne auf eine neue Zeile in Perl zu warten?
- 30. Wie kann ich Verzeichnisse in Perl rekursiv auslesen?
Ich frage mich aber: warum würden Sie das brauchen? –
Ich habe es verwendet, um den Fortschritt durch einen sehr langen Prozess schnell zu verfolgen, und die Reihenfolge zu überprüfen, wie Breakpoints, aber ohne den Debugger zu verwenden –
@LeonTimmermans: Ich reagiere auf Ihren sehr alten Kommentar darüber, warum ein Perl Programmierer könnte wollen _ _FILE_ _ und _ _ LINE _ _. Im Grunde die gleichen Gründe, warum ein C/C++ - Programmierer sie haben möchte. Z.B. Heute habe ich einen Test überarbeitet, so dass Test :: Differenzen :: eq_or_diff in einer Subroutine aufgerufen wurde. Die gemeldete Zeilennummer befand sich in der Subroutine, von der aus die Subroutine aufgerufen wurde. Das Hinzufügen von __ LINE __ zum Testnamen hilft mir, den fehlgeschlagenen Test zu finden. Wenn ich jetzt einfach ein Makro CODE_LOCATION in Perl5 schreiben könnte. –