Синтаксис <DATA> в perl
Где я могу узнать больше о следующем синтаксисе в 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
Ответы
Ответ 1
Цитирование документа:
Ток __DATA__
сообщает компилятору perl, что Perl-код для компиляция завершена.
Все после токена __DATA__
доступный для чтения с помощью дескриптора файла FOOBAR::DATA
, где FOOBAR
имя текущего пакета, когда токен __DATA__
достигнут.
Это работает так же, как __END__
делает в пакете 'main', но для другие данные модулей после __END__
не будут автоматически восстановлены, тогда как данные после __DATA__
есть.
Можно добавить к этому только то, что с помощью раздела __DATA__
очень удобно иллюстрировать некоторые понятия, связанные с чтением файлов, на Perl. это в основном файл, прикрепленный к коду, и содержимое этого файла легко доступно через <DATA>
. Вот почему он довольно популярен здесь на SO. )
Ответ 2
Все после __DATA__
рассматривается как файл, который вы можете прочитать из дескриптора файла DATA
. DATA
открывается автоматически, и вам не нужно ничего делать, чтобы получить его таким образом.
Что непонятно? Кажется, что ваша программа использует его правильно.
Ответ 3
См. официальный документ http://perldoc.perl.org/perldata.html и поиск __DATA__