# The /g modifier is used to remember the "position in a string" # so you can incrementally process a string. # The /c flag does not reset the position on a failed match. # A match is considered failed if it no longer matches in a global context. # This can happen somewhere inside the string or definitely at the end. # In such a situation the position index is reset to zero. # pos() function in Perl is used to return the position of the last match. #=pod print"\nEXEMPLUL-1\n"; print"acgt3ta\n"; $secv = 'acgt3ta'; $pos = ''; while( $secv =~ /[a-z]/g ) { print "$&"; $pos = pos($secv); } print "\ncautarea continua de la pozitia $pos\n"; print "dar indexul este resetat la zero\n"; print "deci, cautarea continua de la inceputul sirului\n"; while( $secv =~ /./g ) { print "$&"; } print"\n"; #=cut #=pod print"\nEXEMPLUL-2\n"; print"acgt3ta\n"; $secv = 'acgt3ta'; $pos = ''; while( $secv =~ /[a-z]/gc ) { print "$&"; $pos = pos($secv); } print "\ncautarea continua de la pozitia $pos\n"; print "dar indexul NU este resetat la zero\n"; print "deci, cautarea continua de la pozitia $pos\n"; while( $secv =~ /./g ) { print "$&"; } print"\n"; #=cut #=pod print"\nEXEMPLUL-3\n"; print"acgt3ta\n"; $secv = 'acgt3ta'; $pos = ''; while( $secv =~ /\d/gc ) { print "$&"; $pos = pos($secv); } print "\ncautarea continua de la pozitia $pos\n"; print "dar indexul NU este resetat la zero\n"; print "deci, cautarea continua de la pozitia $pos\n"; while( $secv =~ /./g ) { print "$&"; } print"\n"; #=cut # Closely associated with the /g modifier is the \G anchor. # It stops matching if the mechanism failed in a global context. # The \G anchor matches at the point where the previous /g match left off. # \G allows us to easily do context-sensitive matching. #=pod print"\nEXEMPLUL-4\n"; print"acgt3ta\n"; $secv = 'acgt3ta'; $pos = ''; while( $secv =~ /[a-z]/g ) { print "$&"; $pos = pos($secv); } print "\n",'modificatorul /g impune o cautare pana la sfarsitul sirului',"\n"; print 'chiar daca pe parcursul acestuia a aparut caracterul 3 care nu se potriveste',"\n"; print "indexul este resetat la zero\n"; print "o noua cautare va fi reluata de la inceputul sirului\n"; while( $secv =~ /./g ) { print "$&"; } print"\n"; #=cut #=pod print"\nEXEMPLUL-5\n"; print"acgt3ta\n"; $secv = 'acgt3ta'; $pos = ''; while( $secv =~ /\G[a-z]/g ) { print "$&"; $pos = pos($secv); } print "\n",'\G impune o cautare globala pana cand cheia nu se mai potriveste,',"\n"; print 'cautarea se opreste chiar daca nu s-a ajuns la sfarsitul sirului.',"\n"; print "indexul este resetat la zero\n"; print "o noua cautare va fi reluata de la inceputul sirului\n"; while( $secv =~ /./g ) { print "$&"; } print"\n"; #=cut #=pod print"\nEXEMPLUL-6\n"; print"acgt3ta\n"; $secv = 'acgt3ta'; $pos = ''; while( $secv =~ /\G[a-z]/gc ) { print "$&"; $pos = pos($secv); } print "\n",'\G impune o cautare globala pana cand cheia nu se mai potriveste,',"\n"; print 'cautarea se opreste chiar daca nu s-a ajuns la sfarsitul sirului.',"\n"; print 'in acest caz s-a oprit la pozitia: ',"$pos\n"; print 'modificatorul /c opreste resetarea',"\n"; print 'daca se efectueaza o noua cautare tot cu \G',"\n"; print "aceasta va fi reluata exact de unde cea anterioara s-a oprit (a dat gres)\n"; while( $secv =~ /\G./g ) { print "$&"; } print"\n"; #=cut