&Lt ne diyor;&m>''=~m lt;> sözdizimi perl?
Perl çok alışılmadık sözdizimi vardır, ama iş yerinde bir kod parçası üzerinden bana şaşkın bıraktı o gün geldiğimi anlıyorum. Birisi bunun ne anlama geldiğini bana açıklayabilir misiniz:
<<'m'=~m>>
print $a unless $b;
return;
m
;
Şimdiye kadar gördüğüm herhangi bir biçimde HEREDOC sözdizimi gibi görünüyor.
CEVAP
Bugizlisözdizimi ornate double-bladed sword olarak bilinir ve tipik olarak gösterilir:
<<m=~m>>
Comments here
m
;
Sınırlayıcı olarak çok satırlı, heredoc sözdizimi ve MAÇ operatörü (=~
) >
yorumlar kesmek.
Bölüm /
, sınırlayıcı olarak değil eşleşen, 'm' operatör gereklidir. için Not olarak, Örneğin $my_var =~ /test/
$my_var =~ >test>
geçersiz olurdu oysa $my_var =~ m>test>
, eşdeğerdir.
Senin parçasında m
ilk karakteri tek tırnak, $a
$b
değişkenleri anlamı kapalı olmasına dikkat aralıklı olmayacak. Bu tırnak (verilen kod benim örnek başına) perl otomatik olarak sonuna çift tırnak eklemek istiyorum, ihmal edilmiş marker ve herhangi bir sonraki değişken aralıklı olur. Bu ise $a
$b
artık tanımlanmışsa sorunlara neden olur ve use warnings;
kullanıyorsun.
Süslü çift bıçak yukarıdaki örnekte anlamak daha kolay (ama yine de tavsiye edilmez), yazabiliriz:
<<"END" =~ //
Comments here
END
;
=~ //
gereksiz olduğunu unutmayın, bu eşdeğerdir:
<<"END";
Comments here
END
Sadece boşluk bağlamda standart heredoc sözdizimi.
Void bağlamda bir dize olması sorunlara neden olabilir gibi üretim kodunda bunu kullanarak tavsiye etmem. Ayrıca bu kodu bile en deneyimli perl programcılar için kafa karıştırıcı ve amaçsızca okumak ve korumak zordur! Eğer çok satırlı Uygun Yorum oluşturmak istiyorsan, o zaman burada açıkladı How do I enter a multi-line comment in Perl? pod yapışmasını öneririm
Bu kadar temizler umuyoruz.
Neden Perl ile Python senaryomu yürütm...
Nasıl C# sözdizimi vurgulama tekrar ça...
Ama uygulandığı 'uygulama durumun...
Böyle büyük mükafat 4.1't yeniden...
Git diyor "Uyarı: bilinen ana lis...