Arka plan açıklaması:
split, diğer özellikler gibi, bir listesini verir. Bir listeye başvuru yapamazsınız. Ancak, referans operatörünü bir listeye uygularsanız, tüm üyelerine uygulanır. Örneğin:
use Data::Dumper;
my @x = \('a' .. 'c');
print Dumper \@x
Çıktı:
$VAR1 = [
\'a',
\'b',
\'c'
];
nedenle, my $test = \split(/,/, 'a,b,c,d,e');
yazarken, döndürülen listenin son öğeye bir başvuru almak (örneğin What’s the difference between a list and an array? bakınız). Senden beri
my $scalar = ('dog', 'cat', 'bird'); # $scalar gets bird
:
Eğer sağ taraftaki bir liste var gibi görünse de, Perl aslında bir virgülle ayırarak skalerler bir demet görür: Durumunuz benzer Bir skaler atama, sağ taraf skaler bağlamdadır. Skaler bağlamda virgül operatörü (evet, bir operatördür!), Sol tarafını değerlendirir, sonucu atar ve sonucunu doğru olarak değerlendirir ve sonucu döndürür. Aslında, bu liste benzer bir şekilde skaler atar ve en sağdaki değerdir. Birçok kişi bunda geçen eleman da bekledikleri sayısıdır listesi-lookalike tercih çünkü: Senin durumunda
my $scalar = (1, 2, 3); # $scalar gets 3, accidentally
, ne RHS olsun elemanlarına referans listesi olduğunu Liste split
tarafından döndürüldü ve bu listenin son öğesi $test
'da biter. İlk önce bu dönüş değerlerinden bir dizi oluşturup ona bir referans göndermeniz gerekir.
my $test = [ split(/,/, 'a,b,c,d,e') ];
Bu yüzden bu yüzden çok seviyorum! Kapsamlı, sabırlı ve çok net açıklamalarınız için çok teşekkürler. Şimdi tamamen açık, bugün çok şey öğrendim. Teşekkürler! –