Существует этот маленький кусочек кода:
use strict;
use warnings;
sub checkDefinition {
my ($var, $desc) = @_;
if (defined $var) {
print "$desc: $var \n";
} else {
print "$desc: undef \n";
}
}
checkDefinition($ , "list separator");
Однако, когда я пытаюсь запустить его, я получаю следующее сообщение об ошибке:
>perl listSeparator.pl String found where operator expected at listSeparator.pl line 14, near "$ , "list separator""
(Missing operator before "list separator"?) syntax error at listSeparator.pl line 14, near "$ , "list separator"" Execution of
listSeparator.pl aborted due to compilation errors.
так, возникает вопрос, как же один проход переменная разделителя списка в подпрограмму? Я попытался сделать ссылку на него:
my $lineSepRef = \$ ;
однако, я получаю другую ошибку:
Semicolon seems to be missing at listSeparator.pl line 14.
Можно ли передать $ в подпрограмму? Если да, то как?
FYI, работающие на окнах, клубничный Perl версии 5.016003
Спасибо заранее.
Я смущен. Что вы подразумеваете под «разделителем строк»? Символ '$' используется внутри регулярных выражений для соответствия с концом строки. Но это не переменная, вы не можете использовать ее вне обычного выражения. – redneb
Я понимаю, что это специальная глобальная переменная, содержащая символ разделителя строк. По крайней мере, согласно [Perl in a Nutshell] (http://docstore.mik.ua/orelly/perl4/perlnut/ch04_04.htm) – FrankRalphBob
В ссылке есть опечатка. Правильная переменная для разделителя списков - '$ '' (см. [Perlvar] (http://perldoc.perl.org/perlvar.html#%24LIST_SEPARATOR)). – redneb