Dual-Life/autodie

autodie should exit($!) [rt.cpan.org #93716]

Opened this issue · 0 comments

toddr commented

Migrated from rt.cpan.org#93716 (status was 'open')

Requestors:

From felipe@felipegasper.com on 2014-03-10 19:12:14
:

==================
root@felipe 14:08:36 case88745 /usr/local/cpanel
 > perl -e'open FH, "<", "yglzdfvxbfg" or die;'
Died at -e line 1.

ENOENT (2)
==================
root@felipe 14:06:08 case88745 /usr/local/cpanel
 > cat | perl -Mautodie
`perl -Mautodie -e'open FH, "<", "yglzdfvxbfg"'`;
print 0+$? . $/;
print $? . $/;
Can't open 'yglzdfvxbfg' for reading: 'No such file or directory' at -e 
line 1
65280
65280

OK
==================

When an exception from autodie causes perl to exit(), the exit code 
should correspond to the value of $! as perl �natively� does as in the 
first example above.


-Felipe Gasper
cPanel, Inc.


From niels@thykier.net on 2014-03-10 19:22:20
:

On 2014-03-10 20:12, felipe@felipegasper.com via RT wrote:
> Mon Mar 10 15:12:14 2014: Request 93716 was acted upon.
> Transaction: Ticket created by felipe@felipegasper.com
>        Queue: autodie
>      Subject: autodie should exit($!)
>    Broken in: (no value)
>     Severity: (no value)
>        Owner: Nobody
>   Requestors: felipe@felipegasper.com
>       Status: new
>  Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=93716 >
> 
> 
> [...]
> 
> When an exception from autodie causes perl to exit(), the exit code 
> should correspond to the value of $! as perl �natively� does as in the 
> first example above.
> 
> 
> -Felipe Gasper
> cPanel, Inc.
> 

Hi Felipe,

What version of autodie are you using?  Namely, I suspect that the
problem would be fixed in autodie 2.21 due to:

"""
        * INTERNAL : $" and $! are no longer arbitrarily messed with
          for no reason via autodie.  (They're still messed with when
          using Fatal.)
"""

Which would ensure that "$!" is (still) set to 2 and die should DTRT
from there.  Previously, $! would be "protected" by a local, causing it
to be reset to (in your example above) 0.

~Niels




From felipe@felipegasper.com on 2014-03-10 19:30:46
:

On 10.3.14, 2:22 PM, Niels Thykier via RT wrote:
> <URL: https://rt.cpan.org/Ticket/Display.html?id=93716 >
>
> On 2014-03-10 20:12, felipe@felipegasper.com via RT wrote:
>> Mon Mar 10 15:12:14 2014: Request 93716 was acted upon.
>> Transaction: Ticket created by felipe@felipegasper.com
>>         Queue: autodie
>>       Subject: autodie should exit($!)
>>     Broken in: (no value)
>>      Severity: (no value)
>>         Owner: Nobody
>>    Requestors: felipe@felipegasper.com
>>        Status: new
>>   Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=93716 >
>>
>>
>> [...]
>>
>> When an exception from autodie causes perl to exit(), the exit code
>> should correspond to the value of $! as perl �natively� does as in the
>> first example above.
>>
>>
>> -Felipe Gasper
>> cPanel, Inc.
>>
>
> Hi Felipe,
>
> What version of autodie are you using?  Namely, I suspect that the
> problem would be fixed in autodie 2.21 due to:
>
> """
>          * INTERNAL : $" and $! are no longer arbitrarily messed with
>            for no reason via autodie.  (They're still messed with when
>            using Fatal.)
> """
>
> Which would ensure that "$!" is (still) set to 2 and die should DTRT
> from there.  Previously, $! would be "protected" by a local, causing it
> to be reset to (in your example above) 0.
>

Hm. I was using 2.12. That sounds like it would fix the issue, but I 
tried updating my laptop�s autodie version to 2.22, to no avail:

felipe@Macintosh-19 14:25:15 /
 > perl -Mautodie -e'print $autodie::VERSION'
2.22
OK
felipe@Macintosh-19 14:26:53 /
 > cat | perl -Mautodie
`perl -Mautodie -e'open FH, "<", "yglzdfvxbfg"'`;
print ($? >> 8) . $/;
Can't open 'yglzdfvxbfg' for reading: 'No such file or directory' at -e 
line 1
255

-F


From toddr@cpan.org on 2020-01-08 15:48:53
:

Current Behavior:

$>perl -Ilib -Mautodie -e'open FH, "<", "qweqweqerwr"; print "Should not reach here\n"'; echo $?
Can't open 'qweqweqerwr' for reading: 'No such file or directory' at -e line 1
255

Felipe believes it should ext 2: "Normally Perl uses $! as the exit value when an exception ends the program."

#> perl -e'open FH, "<", "qweqweqerwr" or die'; echo $?
Died at -e line 1.
2