Perl'de nasıl bir küresel korursak yapabilirim?

2 Cevap php

Perl birden desen eşleştirme ve PHP yapar içinde preg_match_all gibi hepsi dönen bir düzenli ifade ile gelip çalışıyorum.

İşte ne var:

$str = 'testdatastring';
if($str =~ /(test|data|string)/) {
        print "its found index location: $0 $-[0]-$+[0]\n";
        print "its found index location: $1 $-[1]-$+[1]\n";
        print "its found index location: $2 $-[2]-$+[2]\n";
        print "its found index location: $3 $-[3]-$+[3]\n";
}

Bu bana sadece bu 'deneme' olan ilk maçı verir. 'Test', 'veri' ve 'string': Ben Belirtilen desen tüm tekrarlamalarını maç muktedir istiyorum.

PHP, sen amaçla bu tür preg_match_all kullanabilirsiniz biliyorum:

if(preg_match_all('/(test|data|string)/', 'testdatastring', $m)) {
        echo var_export($m, true);
}

'Test', 'veri' ve 'string': Yukarıdaki PHP kodu 3 dizeleri maç olacaktır.

Perl'de bunu nasıl bilmek istiyorum. Herhangi bir yardım büyük mutluluk duyacağız.

2 Cevap

Perl eşdeğer

preg_match_all('/(test|data|string)/', 'testdatastring', $m)

olduğunu

@m = ("testdatastring" =~ m/(test|data|string)/g);

The /g flag stands for global, so it returns a lolduğunut of matches in lolduğunut context.

Bkz http://www.anaesthetist.com/mnm/perl/regex.htm. (Oradan) Temel sözdizimi:

$_ = "alpha xbetay xgammay xdeltay so on";
($first, $second, $third) = /x(.+?)y/g;

/ G Not