2011-07-18 22 views
7
#!/usr/bin/perl 
use warnings; 

my %hash=("no1"=>1, 
     "no2"=>2, 
    ); 

print %hash; #Prints no11no22 
print "%hash"; #Prints %hash 

Neden Perl çift tırnak içinde bir karma enterpolasyonu desteklemiyor? Skaler ($), diziler (@) için enterpolasyonu destekliyor, o zaman neden karma (%)?Perl neden çift tırnaklarda karmaların enterpolasyonunu desteklemiyor?

+2

Perl yemek kitabının serbestçe kullanılabilir olduğunu düşünmedim, yasal olarak – MkV

+0

Ya, bu yasadışı. –

+2

Bir geçici çözüm, bir diziyi bir dizi başvurusu yapmak ve sonra da bunu kaldırmaktır: 'print" @ {[% hash]} "' – mob

cevap

15

Bir karma nasıl dizilir? Skaler açık ve diziler de vardır. Ama bir karma ne olmalı? Böyle bir tasdik ne kadar yararlı olur? Bir enterpolasyon dizesinde unescaped% karakterini kullanabilmekten daha mı az mı yararlıdır? Bugün enterpolasyonlu dizelerdeki% 'yi kullanan tüm kodları düzeltmek için harcayacağı iş miktarına değer mi?

Bu sorulara iyi cevaplar bulabilirseniz, P5P'nin bunları dinlemeye istekli olacağını eminim.

+0

Şaşırtmaların enterpolasyonunun dizilerden çok farklı olduğu ve 'dizginlenmemiş' olarak kabul edilir.Kaynakların dizilişine neden ihtiyaç duyulduğunu ve hash'ların neden olmadığını bilir miyim? – Salil

+0

@Salil Dizilerin dizilişi geriye dönük uyumluluk için gereklidir.Yunan dilden kaldırılabilirse muhtemelen. Perl 6 dizisi enterpolasyona sahip değildir, bunun yerine enterpolasyonu ifade eder, ki bu da çok daha iyi çalışır: '" {@ a.join (',')} ''ve' {{h.perl}' '. –

21

Nathan Torkington'a alıntı yapmak için: "Büyük sorun,% 'nin printf ile çift tırnaklı dizelerde yoğun olarak kullanılmasıdır." Daha fazla bilgi here.

+0

Bağlantı için teşekkürler. –

4

"Neden" e gerçekten bir cevap değil, "nasıl" diye çeşitli cevaplara işaret edeceğimi düşündüm. Ben olacağını ne faydası bilmiyorum

#!/usr/bin/perl 
use warnings; use strict; 

my %hash = (
    "no1" => 1, 
    "no2" => 2, 
); 

print "@{[ %hash ]}\n"; 

Ama:

biri, tabii ki, deneyebilirsiniz. Eğer bir karma veya başka herhangi bir karmaşık veri yapısının içeriğini dökümü istiyorsanız

, sizin kullanım durumuna bağlı olarak Data::Dumper veya YAML veya JSON kullanın.

+0

Chas Owens'ın komiseri Benim sorum var. –

+0

Ooops! Bu yorumu kaçırdım. Bence diğerlerinin de bu yorumu kaçırması durumunda bu cevabı bırakacağım. –

+0

Ya, bu iyi. –

İlgili konular