2010-11-23 11 views
9

- 私はPerlで私の最初のプログラムを書いて、これを書いた:なぜPerlはグローバルシンボル "SYMBOL"がPROGRAM.pl行Xで明示的なパッケージ名を必要としているのですか?

use strict; 
use warnings; 
$animal = "camel"; 
print($animal); 

私はそれを実行すると、私は、Windowsのコマンドラインからこれらのメッセージを得る:

Global symbol "animal" requires explicit package name at stringanimal.pl line 3 
Global symbol "animal" requires explicit package name at stringanimal.pl line 4 

してください、可能性があり、誰これらのメッセージはどういう意味ですか?

my $animal = "camel" 

use strictを使用している場合:

答えて

25

use strict;を使用する前に、変数を宣言する必要があります。コードサンプルのようにしないと、そのエラーが発生します。

この行を変更、あなたの変数を宣言する:より詳細な説明、およびまたuse strictについてはperldocセクションのため

my $animal = "camell"; 

を参照してください "Declaring variables":へ

$animal = "camell"; 

を。

P.S.キャメルは「ラクダ」:-)に綴られ

編集:どのようなエラーメッセージが実際に意味することは、Perlは、それが宣言されていないので、$animalという名前の変数を見つけることができないということであり、それは変数でなければならないことを前提としていパッケージに定義されていますが、パッケージ名の前に忘れてしまったことを示しています。 $packageName::animal。明らかに、これはここでは当てはまらず、あなたは単に$animalと宣言していないだけです。

+0

¿パッケージとは何ですか? – Peterstone

+0

パッケージとは、コードを複数のファイルに分割するPerlの方法です(個々の関連するコードをまとめてパッケージ化し、異なるプロジェクトで再利用できるようにする)。これは、メンテナンスの悪夢のような300000行のスクリプトを1つだけ残さないようにします:-)。 [このチュートリアル](http://perldoc.perl.org/perlmod.html)を参照してください。 – Cameron

+0

パッケージは名前空間です。あなたは同じファイルに1トンも持っています。 – Axeman

0

あなたが配置する必要があります。

関連する問題