Я просто оставлю это здесь

в 22:03, , рубрики: perl, метки:

Я не оставлю цель обо очернить Перл. Я люблю Перл.
Просто надо различать список и массив в Перле.

use Perl or die;
#!/usr/bin/perl
use strict;
my $x = ('a', 'b');
print $x;

Вывод:

b

#!/usr/bin/perl
use strict;
my @a = ('a', 'b');
my $x = @a;
print $x;

Вывод:

2

#!/usr/bin/perl
my @a = ('a', 'b');
my ($x) = @a;
print $x;

Вывод:

a

#!/usr/bin/perl
my @a = ('a', 'b');
print scalar @a;

Вывод:

2

#!/usr/bin/perl
print scalar ('a', 'b');

Вывод:

b

#!/usr/bin/perl
$ = "n";
my $x = ('a', 'b', 'c');
print "x = $x";
my $x = @{['a', 'b', 'c']};
print "x = $x";
my $x = (@{['a', 'b', 'c']});
print "x = $x"; 

Вывод:
x = c
x = 3
x = 3

#!/usr/bin/perl
use strict;
my $x;
my $y;
$y = ($x = ('a', 'b', 'c'));
print "x = $xn";
print "y = $yn";

x = с
y = с

#!/usr/bin/perl
use strict;
my $x;
my $y;
$y = (($x) = ('a', 'b', 'c'));
print "x = $xn";
print "y = $yn";

x = a
y = 3

Я не оставлю цель обо очернить Перл. Я люблю Перл.

use Perl or die;

Подробности здесь: perldoc perldata, читать с «List value constructors»

UPD: Наверное по началу меня не так поняли и стали минусовать, добавил фразу «Я не ставлю цель...»

UPD 2:
Про последний пример. В документации написано
«List assignment in scalar context returns the number of elements
produced by the expression on the right side of the assignment»

то есть если списку что-то присваиваем, то вернётся количество элементов, которые присваиваем списку.

 $x = (($foo,$bar) = f());

в $x положится количество элементов, которые возвращает функция f()

Автор: OlegTar

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js