Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > основы


Автор: Paul56 1.5.2010, 12:40
объясните, чем отличается запись.

my $var = 3;
и 
my ($var) = 3;

Автор: DaemonSuw 1.5.2010, 15:25
Ничем!
Обычно так пишут когда хотя первому значению из списка присвоить какие нибудь значение и определить еще пару скалеров, вот пример:
my ($dbh, $sth) = $self->get_dbh - вот так я иногда пишу на практике,

Автор: DurRandir 1.5.2010, 19:53
Отличаются. Во 2м случае присваивание выполняется в списковом контексте. Для примера:

sub foo{ return (1,2,3) }
my $bar = foo();
my ($baz) = foo();
print "beware!" if $bar != $baz;

В списковом варианте каждый объявленный скаляр слева заберёт по одному значению из списка справа (а массив и хеш - всё до конца), для пропуска значений можно использовать undef:
my ($bar, undef, $baz) = foo();

Автор: Paul56 3.5.2010, 08:24
спасибо DurRandir, за полноценный ответ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)