Есть ли способ получить номер строки (и, возможно, имя файла), где был закодирован токен __DATA__? Или каким-либо другим способом узнать фактический номер строки в исходном исходном файле, откуда взялась строка данных, прочитанная из дескриптора файла DATA?
Обратите внимание, что $. отсчитывает от 1 при чтении из DATA дескриптора DATA. Так что, если номер __DATA__ токена __DATA__ был добавлен в $. это было бы то, что я ищу.
Например:
#!/usr/bin/perl
while (<DATA>) {
my $n = $. + WHAT??;
die "Invalid data at line $n\n" if /bad/;
}
__DATA__
something good
something bad
Я хочу, чтобы это означало "Неверные данные в строке 9", а не "строка 2" (это то, что вы получаете, если $. Используется само по себе).