Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

match variables persist between calls to a sort subroutine #10461

Closed
p5pRT opened this issue Jun 23, 2010 · 3 comments
Closed

match variables persist between calls to a sort subroutine #10461

p5pRT opened this issue Jun 23, 2010 · 3 comments

Comments

@p5pRT
Copy link

@p5pRT p5pRT commented Jun 23, 2010

Migrated from rt.perl.org#76026 (status was 'resolved')

Searchable as RT76026$

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jun 23, 2010

From @nwc10

Created by @nwc10

$ cat ~/tmp/sorter.pl
#!perl -w
use strict;

sub sorter {
  my $result = $a <=> $b;

  warn $1;
  # And then
  "Leakage" =~ /(.*)/;

  $result;
}

"Win" =~ /(.*)/;

warn "\$1 = '$1'";

my @​b = sort sorter 0..2;

warn "\$1 = '$1'";

print "@​b\n";

print "\nNote the different behaviour for a regular function call​:\n";

$a = $b = 0;
sorter();
sorter();

__END__
$ ~/Reference/5.005_03/bin/perl5.00503 ~/tmp/sorter.pl
$1 = 'Win' at /export/home/nwc10/tmp/sorter.pl line 16.
Win at /export/home/nwc10/tmp/sorter.pl line 7.
Leakage at /export/home/nwc10/tmp/sorter.pl line 7.
$1 = 'Win' at /export/home/nwc10/tmp/sorter.pl line 20.
0 1 2

Note the different behaviour for a regular function call​:
Win at /export/home/nwc10/tmp/sorter.pl line 7.
Win at /export/home/nwc10/tmp/sorter.pl line 7.

I believe that the output should be 'Win' every time.
I suspect that this has been a bug forever. (Well, since perl 2, which added
sort). However, it may realistically be a bug, as 4.036 exhibits this
behaviour​:

$ /usr/local/perl4/bin/perl4.036 sorter.pl
$1 = 'Win' at sorter.pl line 15.
Win at sorter.pl line 6.
Leakage at sorter.pl line 6.
$1 = 'Leakage' at sorter.pl line 19.
0 1 2

Note the different behaviour for a regular function call​:
Leakage at sorter.pl line 6.
Leakage at sorter.pl line 6.

ie $1 persists between all calls to the subroutine. Alternatively, I may
have missed a documented change in behaviour between perl 4 and perl 5.

I've not (yet) been able to build perl 2, to see what it thinks.

(obviously) still present in blead, else I wouldn't be reporting it.

Nicholas Clark

Perl Info


Site configuration information for perl 5.00503:

Configured by nwc10 at Wed Mar 14 19:16:50 GMT 2007.

Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration:
  Platform:
    osname=freebsd, osvers=6.1-prerelease, archname=i386-freebsd
    uname='freebsd colon.colondot.net 6.1-prerelease freebsd 6.1-prerelease #0: tue mar 28 23:04:45 bst 2006 mbm@colon.colondot.net:usrobjusrsrcsyscolon i386 '
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef useperlio=undef d_sfio=undef
  Compiler:
    cc='ccache gcc', optimize='-g', gccversion=3.4.4 [FreeBSD] 20050518
    cppflags='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -DDEBUGGING -I/usr/local/include'
    ccflags ='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -DDEBUGGING -I/usr/local/include'
    stdchar='char', d_stdstdio=undef, usevfork=true
    intsize=4, longsize=4, ptrsize=4, doublesize=8
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    alignbytes=4, usemymalloc=n, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags ='-Wl,-E  -L/usr/local/lib'
    libpth=/usr/lib /usr/local/lib
    libs=-lgdbm -lm -lc -lcrypt
    libc=, so=so, useshrplib=false, libperl=libperl.a
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
    cccdlflags='-DPIC -fPIC', lddlflags='-shared  -L/usr/local/lib'

Locally applied patches:
    


@INC for perl 5.00503:
    /export/home/nwc10/Reference/5.005_03/lib/perl5/5.00503/i386-freebsd
    /export/home/nwc10/Reference/5.005_03/lib/perl5/5.00503
    /export/home/nwc10/Reference/5.005_03/lib/perl5/site_perl/5.005/i386-freebsd
    /export/home/nwc10/Reference/5.005_03/lib/perl5/site_perl/5.005
    .


Environment for perl 5.00503:
    HOME=/export/home/nwc10
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/export/home/nwc10/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/export/home/nwc10/bin:/usr/local/sbin:/sbin:/usr/sbin
    PERL_BADLANG (unset)
    SHELL=/usr/local/bin/bash

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Dec 12, 2010

From @cpansprout

Fixed by ad021bf.

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Dec 12, 2010

@cpansprout - Status changed from 'new' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
1 participant