Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^5: Can we make $& better? (need)

by demerphq (Chancellor)
on Sep 12, 2007 at 19:24 UTC ( #638654=note: print w/ replies, xml ) Need Help??


in reply to Re^4: Can we make $& better? (need)
in thread Can we make $& better?

Hrm, ill have to check the code in more detail, however I'm pretty sure that /g in list context copies the string *once*, wheras /g in scalar context doesn't copy it at all. The latter I know because i "fixed" it in 5.9.5 and then had to back out the fix because it caused an unacceptable slowdown.

However as far as I know you were correct, using capturing parens will cause a copy of the full string. Ill try to follow up with more details from the code when I have more time.

---
$world=~s/war/peace/g


Comment on Re^5: Can we make $& better? (need)
Re^6: Can we make $& better? (need)
by tye (Cardinal) on Sep 12, 2007 at 20:49 UTC

    BTW, my test was to change the string used in the match and then see if $1 also changed. That isn't a perfect test because it might be that the string is copied but $1 doesn't correctly use the copy made, for example. Here is a more polished version and two sets of results:

    #!/usr/bin/perl -w use strict; print "$] $^O\n"; for( qw( s l sg lg ) ) { my $x= "-y1-y2-"; my @y; $y[0]= $x =~ /(.\d)/ if 's' eq $_; @y= $x =~ /(.\d)/ if 'l' eq $_; $y[0]= $x =~ /(.\d)/g if 'sg' eq $_; @y= $x =~ /(.\d)/g if 'lg' eq $_; $x= ":1n:2n:"; print "$_ ($1)\n"; } __END__ 5.006 MSWin32 s (y1) l (1n) sg (1n) lg (2n) 5.008008 MSWin32 s (y1) l (y1) sg (1n) lg (2n)

    Which shows I'd missed the only "will copy" case in 5.6.

    - tye        

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://638654]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (4)
As of 2015-07-05 06:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls