我的Perl腳本是:我的第一個Perl腳本產生錯誤
#!/usr/bin/perl -w
use strict ;
use warnings;
print "Hello $name \n"
我得到這個錯誤:
Global symbol "$name" requires explicit package name at fst_pscpt.pl.
這是真的停止我的progress.do我們需要包括任何包? ??
感謝&問候, B.Raviteja
我的Perl腳本是:我的第一個Perl腳本產生錯誤
#!/usr/bin/perl -w
use strict ;
use warnings;
print "Hello $name \n"
我得到這個錯誤:
Global symbol "$name" requires explicit package name at fst_pscpt.pl.
這是真的停止我的progress.do我們需要包括任何包? ??
感謝&問候, B.Raviteja
您還沒有宣佈任何變量$name
。所以你需要以某種方式獲得這個變量。例如,如果你想通過命令行得到它,你可以這樣做:
#!/usr/bin/perl -w
use strict;
use warnings;
my $name = $ARGV[0];
print "Hello, $name!\n";
然後調用你的程序,像這樣:
./myprog.pl Rafe
而得到的輸出:
Hello, Rafe!
另外,在最後一行末尾沒有分號。你也需要這個。
's/ARGV [1]/ARGV [0] /'的Perl最佳實踐。分號在塊的末尾是可選的,包括代碼的結尾。 Perl以這種方式和其他許多方式非常寬容。 – 2011-06-16 05:16:57
@socket好習慣總是用分號結束語句,不過。 – 2011-06-16 05:32:56
我同意並且幾乎總是使用可選的分號。然而,如果它是可選的,你需要這個*有點太強大了。 – musiKk 2011-06-16 07:17:40
diagnostics讓你在這種情況下,更有益的幫助:
$ perl -Mdiagnostics fst_pscpt.pl
Global symbol "$name" requires explicit package name at fst_pscpt.pl line 4.
Execution of fst_pscpt.pl aborted due to compilation errors (#1)
(F) You've said "use strict" or "use strict vars", which indicates
that all variables must either be lexically scoped (using "my"),
declared beforehand using "our", or explicitly qualified to say
which package the global variable is in (using "::").
Uncaught exception from user code:
Global symbol "$name" requires explicit package name at fst_pscpt.pl line 4.
Execution of fst_pscpt.pl aborted due to compilation errors.
at fst_pscpt.pl line 5
有沒有必要當你有'使用警告使用'-w'標誌;'在你的代碼。 '使用警告;'被認爲是正確的,現代的用法。欲瞭解更多信息,你可以閱讀perllexwarn。在你的Perl學習的這個階段,這可能沒有多大意義,但如果你不想盲目吸收我的斷言,那麼你應該得到一個鏈接。 http://perldoc.perl.org/perllexwarn.html – daotoad 2011-06-16 05:57:10
您示例的好處在於您已經開始遵循您的第一個腳本 – ppant 2011-06-16 17:19:45