develooper Front page | perl.perl5.porters | Postings from August 2013

[perl #54728] PathTools-3.27 triggers a bug in Perl

Thread Previous
From:
James E Keenan via RT
Date:
August 6, 2013 23:12
Subject:
[perl #54728] PathTools-3.27 triggers a bug in Perl
Message ID:
rt-3.6.HEAD-2552-1375830717-1953.54728-15-0@perl.org
On Sun Aug 04 06:56:58 2013, jkeenan wrote:
> On Sun Aug 04 06:14:16 2013, chorny wrote:
> > This ticket can be viewed as two tickets:
> > 1. Bug in PathTools (fixed)
> > 2. This problem:
> > #!perl
> > 
> > "2" =~ m/(.*)/;
> > print test1("1", $1), "\n";
> > 
> > sub test1 {
> >   'aa' =~ m/(.)/;
> >   return $_[0].'/'.$_[1];
> > }
> > prints "1/a" on perl 5.18.0.
> > 
> > Can it be considered a bug?
> > 
> > 
> 
> No, I don't think so.
> 
> With this line:
> 
> >   'aa' =~ m/(.)/;
> 
> ... you have made a new assignment to global variable $1.  Hence, you
> have changed the value to which $_[1] is aliased.  From
> 'pod/perlsub.pod' (blead):
> 
> #####
> Any arguments passed in show up in the array @_.
> Therefore, if you called a function with two
> arguments, those would be stored in $_[0] and
> $_[1]. The array @_ is a local array, but its
> elements are aliases for the actual scalar
> parameters. In particular, if an element $_[0] is
> updated, the corresponding argument is updated (or
> an error occurs if it is not updatable).
> #####
> 
> I'll take this ticket for the purpose of closing it within 7 days unless
> someone thinks we still have a bug in Perl.
> 

Since there has been extensive back-and-forth in this RT since Sunday, I
can no longer take the responsibility of closing it.  So I'm reassigning
it to the ever-popular Nobody.

Nonetheless, I still don't believe there is a bug in Perl here.

Thank you very much.
Jim Keenan

---
via perlbug:  queue: perl5 status: open
https://rt.perl.org:443/rt3/Ticket/Display.html?id=54728

Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About