2012-04-12 1 views
0

Ich versuche, alle Warnungen in einem Perl-Programm durchzuarbeiten und dabei Probleme zu haben.Was ist der Grund für die Warnung "Nicht in Anführungszeichen gesetzte Zeichenfolge ... könnte mit zukünftigem reserviertem Wort kollidieren"?

Unquoted string "lib" may clash with future reserved word at /home/user/bin/ttt.v01.pl line 17. 
    line 17: use lib ("${HOME}/.lib"); 
Unquoted string "sync" may clash with future reserved word at /home/user/bin/ttt.v01.pl line 23. 
    line 23: our $SYNC_HOSTS = "${HOME}/.sync.hosts"; 
Unquoted string "config" may clash with future reserved word at /home/user/bin/ttt.v01.pl line 28. 
    line 28: our $USAGE_TEXT = "[-hd] -a <config> -l <location>"; 

Von perldiag:

Unquoted Zeichenfolge "% s" mit Zukunft reserviertes Wort kollidieren können Sie

(W reserviert) eine Bareword verwendet, die eines Tages als ein reserviertes Wort geltend gemacht werden könnten. Es ist am besten, ein solches Wort in Anführungszeichen zu setzen oder es in Großbuchstaben umzuwandeln oder einen Unterstrich einzufügen. Sie können es auch als Unterroutine deklarieren.

Ich habe diese alle doppelt zitiert, und ich bin mir nicht sicher, was ich vermisse.

+7

Es wäre sehr hilfreich, wenn Sie ein minimales Skript veröffentlichen könnten, das eine dieser Warnungen reproduziert. – jpstrube

+2

Bitte bearbeiten Sie Ihre Frage, um die Zeilen 1 bis 17 von 'ttt.v01.pl' einzuschließen. –

Antwort

1

Hmm, vielleicht haben Sie ein unübertroffenes Doppelzitat vor Zeile 17, was dazu führt, dass der Compiler falsche Warnungen meldet?

+1

Ich dachte das Gleiche. Es markiert die 'lib' in '/.lib' nicht in der 'use', weil es denkt, dass die nach der 'use'-Anweisung zitiert wird. – Axeman

+0

Danke! Das war's – harmonic

0

Ich rieche ein fehlendes Anführungszeichen!

Verwenden Sie einen Programmeditor oder verwenden Sie den Editor?

Die meisten Programm-Editoren haben Syntax-Hervorhebung, die Ihnen leicht helfen können, das fehlende Anführungszeichen zu finden. Ich verwende VIM, die zitierte Strings in rot und Perl-Funktionen in grün setzt. Wenn ich plötzlich alle meine verschiedenen Perl-Funktionen rot sehe und zitierter Text nicht rot ist, weiß ich sofort, dass ich irgendwo ein Zitat verpasse.

Bearbeiten Sie Ihre Frage und fügen Sie die ersten 20 Zeilen Ihres Programms ein.

Verwandte Themen