2012-11-19 15 views
18

ここで、perlで次の構文について詳しく知ることができますか?<DATA>の構文perl

<DATA>__DATA__の間の接続は不明です。

while (my $date_string = <DATA>) { 
    chomp($date_string); 
    next if not length $date_string; 
    print "$date_string ist Unixtime ", 
     $lang_date->str2time($date_string), 
     " und ", 
    $lang_date->time2str('%d.%m.%Y %T (%Z)',$lang_date->str2time($date_string)), 
     "\n"; 
} 

__DATA__ 
1.3.1999 
1 Marz 1999 
1. Marz 1999 
1/3/1999 
+4

「__DATA__」ハンドルで楽しくなる:http://stackoverflow.com/questions/4459601/how-can-i-use-data-twice、http://stackoverflow.com/a/10353338/168657 – mob

答えて

27

the docを引用:

__DATA__トークンは コンパイルのためのPerlコードが終了したperlのコンパイラに指示します。 __DATA__トークン

すべてがFOOBAR__DATA__トークンが到達した現在のパッケージの名前であるファイルハンドルFOOBAR::DATA、経由して読み取ることができる です。

これは__END__は、「メイン」パッケージにない全く同じように動作しますが、__END__後 他のモジュールのデータ用__DATA__後のデータであるのに対し 、自動的に検索可能ではありません。

__DATA__を使用してこれを追加できるのは、Perlのファイル読み込み関連の概念を簡単に説明するためのセクションです。これは基本的にコードに添付されたファイルであり、このファイルの内容は<DATA>から簡単にアクセスできます。だからこそ、それはここで非常に一般的です。 )

3

は、公式ドキュメントを参照してくださいhttp://perldoc.perl.org/perldata.html__DATA__は、あなたがファイルハンドルDATAから読み取ることができるファイルとして処理された後__DATA__

5

すべてを検索します。 DATAが自動的に開き、そのようにするために何もする必要はありません。

明確ではありませんか?あなたのプログラムはそれを正しく使用しているようです。

+0

私のプログラムは、インターネット上で見つけたコードの平和で、理解できませんでした – Skip