2012-09-14 17 views
5

Perl doc devletler:/r bayrağını Perl regex'te nasıl kullanılır?

e Evaluate 'replacement' as an expression 
r Return substitution and leave the original string untouched. 

yedek desenleri kullanılmak üzere mevcut bayrakları bulunmaktadır. r bayrağını benim ikame desenime geçirdiğimde, bir sözdizimi hatası olarak yorumlanır. Perl 5.8.8 koşuyorum. Perl versiyonumda desteklenmiyor mu? Ayrıca, bir kişi bayrağın nasıl kullanılacağına ve yeni oluşturulan değiştirmeye nasıl çağrı yapılacağına dair bir örnek verebilir mi?

cevap

15

Belki de 5.8.8 için dokümanlar okuyor olmanız gerekir, o zaman?/r 5.14'e eklendi! Size Olabilir

print "abba" =~ s/b/!/rg;   # Prints a!!a 

my $new = $old =~ s/this/that/r; # Leaves $old intact. 

my $trimmed = $val =~ s/^\s+//r =~ s/\s+\z//r; 
my $trimmed = (($val =~ s/^\s+//r) =~ s/\s+\z//r); # Same as previous 
+0

:

5.8.8 olarak, s /// r

do { (my $s = $_) =~ s/foo/bar/; $s } 

Numune kullanımlar ile

s/foo/bar/r 

eşdeğer yapabilirsiniz 5.14'te nasıl arayacağımı göster. Farklı bir değişkeni nasıl döndürdüğüne dair kafam karıştı, ama yine de onu çalıştırmak için değişkeni not etmek zorundasın. Örneğin: $ var = ~ s/this/that/r; Yeni değişken nerede saklanıyor? – user1671989

+0

@ user1671989, Geri döndü. «' Print »abc" = ~ s/b /!/Rg; '» baskı «' a! C' ». – ikegami

+0

Bu yüzden eğer geri döner ve ben onu olarak adlandırırsam $ var = ~ s/this/that/r; Gerçekten de $ var? $ var üzerinde nasıl çalıştırabilirim ve $ new_var'a iade edebilirim? Bir noob olduğum için üzgünüm, kafamı dolaştıracak bir sorunum var. – user1671989

İlgili konular