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
successful s///e clobbers $! on MSWin32 #12652
Comments
From cm.perl@abtela.comCreated by cm.perl@abtela.comsuccessful substitutions with s///e clobber $! on MSWin32. One impact of this bug is that, because such a substitution occurs in Perl Info
|
From cm.perl@abtela.com0001-Add-test-TODO-on-MSWin32-successful-s-e-does-not-clo.patchFrom 9765f5da1323607e17cb368c3d7e4cb75c31cbd0 Mon Sep 17 00:00:00 2001
From: Christian Millour <cm.perl@abtela.com>
Date: Mon, 17 Dec 2012 16:59:32 +0100
Subject: [PATCH] Add test (TODO on MSWin32): successful s///e does not clobber $!
---
t/re/subst.t | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/t/re/subst.t b/t/re/subst.t
index 8acd54f..5769ea1 100644
--- a/t/re/subst.t
+++ b/t/re/subst.t
@@ -7,7 +7,7 @@ BEGIN {
require './test.pl';
}
-plan( tests => 206 );
+plan( tests => 207 );
$_ = 'david';
$a = s/david/rules/r;
@@ -886,3 +886,12 @@ $@ = "\x{30cb}eval 18";
$@ =~ s/eval \d+/eval 11/;
is $@, "\x{30cb}eval 11",
'loading utf8 tables does not interfere with matches against $@';
+
+TODO: {
+ local $TODO = "fails on $^O" if $^O eq 'MSWin32';
+ local $! = my $arbitrary = 1;
+ my $arg = "a";
+ # $arg =~ s/([[:cntrl:]]|[[:^ascii:]])/sprintf("\\x{%x}",ord($1))/eg;
+ $arg =~ s/(.)/"$1"/e;
+ is (0+$!, $arbitrary, 'successful s///e does not clobber $!');
+}
--
1.7.4
|
From @demerphqOn 17 December 2012 19:12, Christian Millour <perlbug-followup@perl.org> wrote:
$! is only valid _immediately_ after a failed system call. If you use $! after you have done a carp() then you have waited too long. If your problem is that you are doing carp("dollar-bang is ", $!) you So, IMO this is not a bug. Yves -- |
The RT System itself - Status changed from 'new' to 'open' |
From cm.perl@abtela.comLe 17/12/2012 20:59, demerphq a écrit :
I beg to disagree ; carp and family have no business altering Note incidentally that dist/Carp/t/Carp.t explicitly checks that croak() |
From @doyOn Tue, Dec 18, 2012 at 12:20:31AM +0100, Christian Millour wrote:
From 'perldoc perlvar': Many system or library calls set "errno" if they fail, to indicate the Calling any function, including functions from Carp, can have -doy |
From @demerphqOn 18 December 2012 00:20, Christian Millour <cm.perl@abtela.com> wrote:
No, sorry. What you want to say is /... unless they call a system call Which is what happens here. The regex engine may call out to disk to load code. This is a complex
Umm again no. As soon as you call any operation that might make a
Well, IMO they should not.
This is only tangentally related to Win32. It has to do with the regex
If we are already trying hard not to change $! in croak then we should Yves -- |
From @demerphqOn 18 December 2012 00:27, Jesse Luehrs <doy@tozt.net> wrote:
Exactly. Thanks. OTOH I can see carp/croak trying not to mess with $!, if only so that croak($!); works. Which would mean that this is a bug that tied-vars of this type cheers, -- |
From @bulk88On Mon Dec 17 10:12:56 2012, cm.perl@abtela.com wrote:
Can not reproduce. I ran the attached file, with one or the other line Summary of my perl5 (revision 5 version 17 subversion 7 patch blead Characteristics of this binary (from libperl): -- |
From @bulk88[minitest 116118.pl](https://rt-archive.perl.org/perl5/Ticket/Attachment/1178906/605582/minitest 116118.pl) |
From @LeontOn Tue, Dec 18, 2012 at 12:27 AM, Jesse Luehrs <doy@tozt.net> wrote:
And from POSIX: The value of errno shall be defined only after a call to a function Leon |
From @doyOn Tue, Dec 18, 2012 at 12:38:33AM +0100, demerphq wrote:
If croak($!) doesn't work, that is an actual bug. It's not particularly -doy |
From @bulk88On Mon Dec 17 15:40:46 2012, LeonT wrote:
Perl functions, subs, opcodes, and operators do not always have one to -- |
From @pjcjOn Tue, Dec 18, 2012 at 12:39:47AM +0100, Leon Timmermans wrote:
The last time we discussed this on the list I think we came to the -- |
From cm.perl@abtela.comLe 18/12/2012 00:40, bulk88 via RT a écrit :
Forget about the commented line in the original test. It was intended as here is a session with strawberry perl portable 5.16.2 (a fresh Welcome to Strawberry Perl Portable Edition! Perl executable: C:\strawberry-perl-5.16.2.1-64bit-portable>cat > minitest.pl C:\strawberry-perl-5.16.2.1-64bit-portable>perl minitest.pl C:\strawberry-perl-5.16.2.1-64bit-portable> but, of course because it is a TODO test, prove succeeds... C:\strawberry-perl-5.16.2.1-64bit-portable>prove minitest.pl C:\strawberry-perl-5.16.2.1-64bit-portable> |
From @doyOn Mon, Dec 17, 2012 at 04:14:41PM -0800, bulk88 via RT wrote:
It does point out that this isn't a weird or idiosyncratic restriction, -doy |
From @bulk88On Mon Dec 17 16:29:15 2012, cm.perl@abtela.com wrote:
Still can't reproduce. I tried Perl 5.12 DEBUGGING and Perl 5.17 not _______________________________________________________________________ C:\Documents and Settings\Owner\Desktop>perl -V Characteristics of this binary (from libperl): C:\Documents and Settings\Owner\Desktop> C:\Documents and Settings\Owner\Desktop>perl minitest.pl C:\Documents and Settings\Owner\Desktop>perl -V Platform: Characteristics of this binary (from libperl): C:\Documents and Settings\Owner\Desktop> C:\Documents and Settings\Owner\Desktop>perl -V Platform: Characteristics of this binary (from libperl): C:\Documents and Settings\Owner\Desktop> C:\Documents and Settings\Owner\Desktop> |
From @ikegamiOn Mon, Dec 17, 2012 at 6:20 PM, Christian Millour <cm.perl@abtela.com>wrote:
Nothing offers that guarantee, not even C<read>, C<print> and C<open>! |
From @ikegamiOn Mon, Dec 17, 2012 at 7:03 PM, Jesse Luehrs <doy@tozt.net> wrote:
If croak($!) doesn't work, there's a good chance that croak($_) and |
From @bulk88On Mon Dec 17 20:14:17 2012, bulk88 wrote:
Trying x64 Windows perl. Still can't reproduce. C:\Documents and Settings\Administrator\Desktop>perl -V Characteristics of this binary (from libperl): C:\Documents and Settings\Administrator\Desktop> -- |
From @bulk88On Mon Dec 17 20:37:57 2012, bulk88 wrote:
Trying Cygwin. Still can't reproduce. Administrator@dl585 ~/Desktop Platform: Characteristics of this binary (from libperl): Administrator@dl585 ~/Desktop -- |
From cm.perl@abtela.comLe 18/12/2012 05:14, bulk88 via RT a écrit :
I am generally running Cygwin with strawberry perl portable (SPP) with I have tried running a SPP portable window from an other machine (a On this same machine I have installed Active State Perl and also get the If I am doing something wrong I really can't understand what it is. Many thanks in advance, and best regards |
From cm.perl@abtela.comMicrosoft Windows [Version 6.1.7601] C:\Users\Administrator>c:\Perl64\bin\perl -V Platform: Characteristics of this binary (from libperl): C:\Users\Administrator>type \\tsclient\E\cm\perl\patches\badcarp\onesubst.pl C:\Users\Administrator>C:\Perl64\bin\perl -w \\tsclient\E\cm\perl\patches\badcarp\onesubst.pl C:\Users\Administrator> |
From cm.perl@abtela.comTaisha:~/perl/patches/badcarp $ cat onesubst.pl
Characteristics of this binary (from libperl): 1..2
|
From cm.perl@abtela.com'\\tsclient\C\strawberry-perl-5.16.2.1-64bit-portable' Welcome to Strawberry Perl Portable Edition! Perl executable: \\tsclient\C\strawberry-perl-5.16.2.1-64bit-portable\perl\bin\p C:\Windows>set C:\Windows>perl -V Platform: Characteristics of this binary (from libperl): C:\Windows>type \\tsclient\E\cm\perl\patches\badcarp\onesubst.pl C:\Windows>perl \\tsclient\E\cm\perl\patches\badcarp\onesubst.pl C:\Windows> |
From cm.perl@abtela.comLe 18/12/2012 00:35, demerphq a écrit :
Hmm, nope. What I mean, and want to say, is what I wrote.
I am well aware of that. However I don't see which this should be any
That is the root of the problem. What you describe is indeed the For a function that does not use High level programming is playing with trees. The current handling of $! Also, if we are talking about system calls, my understanding is that the
I really wonder why. What useful purpose is served by allowing the So the program needs to get a good idea of what the actual error is. What are needed instead are numerical comparisons, as in But obviously it is then vital that croak/confess do not clobber $! and
Well IMHO it is related to Win32, in that the test succeeds on unices Taisha:~/perl/patches/badcarp $ Characteristics of this binary (from libperl):
I agree with the latter. However the client code should be isolated from
|
From @druud62On 2012-12-28 17:21, Christian Millour wrote:
Already forever, the proposed alternative is to stack them, like in @!
Why is that not using the return value of eval? eval { -- |
From @demerphqOn 28 December 2012 17:21, Christian Millour <cm.perl@abtela.com> wrote:
Well, I'm sorry but then you are wrong. You cannot rely on $! being
Er, what does this have to do with ERRNO being a global?
Then in principle you should take it up with the authors of the modules.
In the sense of "would be nice if", not in the sense of "must happen".
Sorry?
It is ancient C behavior.
Setting $! is IMO unorthodox. Here is the definition of $! from perlvar: $ERRNO if (open my $fh, "<", $filename) { In the above meaningless stands for anything: zero, If used as a string, yields the corresponding system Also see "Error Indicators".
Because they are testing for something that fundamentally does not For instance, it is quite legitimate that a croak() (which prints to I think there are a host of ways that ERRNO can be set, and I dont
It is not nice, but that is how the underlying C code works.
Ok.
So again in principle you should speak to the author.
To me at this point you cannot trust
I can imagine. I can imagine this failing under all kinds of situations.
Ok. I still think it is an artifact of the regex engine loading reference data.
This could be a bug in the regex caching code.
I still maintain that ultimately you have unreasonable expectations in The only time you can trust it is in code like this: if( ! system_call() ) { Any other use is suspect and pretty much guaranteed to be wrong. Cheers, |
From @bulk88On Fri Dec 28 06:02:30 2012, cm.perl@abtela.com wrote:
I still can't reproduce it. I also tried using UNC paths. Even though I've avoided any discussion on standards until now. If I understand the I am going to pull at straws on possible causes now -something to do with msvcrt.dll on NT 6, ActivePerl and Strawberry Perl -PATH problems, 2 Perls in %PATH%, you were calling the perls with an -UNC problems, I tried a loopback UNC path, IDK if your //tsclient is -virus or antivirus scanner/DLL injection hooking the CRT, I think I will try a procmon log of running the test script and see what -- |
From @bulk88Perl executable: C:\sperl\51621port\perl\bin\perl.exe C:\sperl\51621port>cd C:\Documents and Settings\Administrator\Desktop\ C:\Documents and Settings\Administrator\Desktop>perl n1.pl C:\Documents and Settings\Administrator\Desktop>perl -V Platform: Characteristics of this binary (from libperl): C:\Documents and Settings\Administrator\Desktop>type C:\Documents and Settings\A C:\Documents and Settings\Administrator\Desktop>type "C:\Documents and Settings\ C:\Documents and Settings\Administrator\Desktop>perl -w "\\dl585\C\Documents and C:\Documents and Settings\Administrator\Desktop> |
From cm.perl@abtela.comLe 28/12/2012 19:51, bulk88 via RT a écrit :
I don't believe the problem lies with UNC paths. Here is activestate C:\Users\Administrator>c:\Perl64\bin\perl -V Platform: Characteristics of this binary (from libperl): C:\Users\Administrator>type onesubst.pl C:\Users\Administrator>C:\Perl64\bin\perl -w onesubst.pl C:\Users\Administrator>
My standard workhorse is a Win7 box. The uses of //tsclient were from a
|
From @LeontOn Fri, Dec 28, 2012 at 10:26 PM, Christian Millour <cm.perl@abtela.com> wrote:
I'm not really seeing your point here.
Obviously this does not work in an optimal fashion, but I don't think
It's still not clear to me what other behavior you would want. It
That's a rather crude hack, and I doubt that's the best solution in most cases.
I think that what you really want here is that longmess and shortmess
Once again, lollipops… Leon |
From @bulk88On Fri Dec 28 10:51:02 2012, bulk88 wrote:
script run was the substitute line I think loaded overload.pm -- |
From @bulk88[116118 procmon.CSV](https://rt-archive.perl.org/perl5/Ticket/Attachment/1180868/606980/116118 procmon.CSV) |
From @bulk88On Fri Dec 28 15:14:54 2012, bulk88 wrote:
____________________________________________________________________
____________________________________________________________________ Curcop says Test::Builder line 871 which is $self->_try(sub { require overload; }, die_on_fail => 1); -- |
From @craigberryOn Fri, Dec 28, 2012 at 3:26 PM, Christian Millour <cm.perl@abtela.com> wrote:
Yeah, but it's a pretty fundamental implementation detail. It seems It's not wrong to want newer and better ways of doing things, but my
While locale may change the text of the error string, I really don't
On VMS, the CRTL errno provides pretty good emulation of POSIX errno. I really think portability is a red herring here. The only
Yes, in general, things should not touch errno when successful. But |
From @craigberryOn Sat, Dec 29, 2012 at 2:49 PM, Craig A. Berry <craig.a.berry@gmail.com> wrote:
FWIW, here is where pp_require started clearing errno: <http://perl5.git.perl.org/perl.git/commit/d8bfb8bddf933a815b590823bd52295534e6ded0?f=pp_ctl.c> The only reason given is "suggested by Larry," which is difficult to But why errno needs to be cleared rather than restored is a mystery to $ ./perl -Ilib -e '$!=99; require strict; print 0+$! . qq/\n/;' I make no further claims about it except that I see no test failures $ git diff Inline Patchdiff --git a/pp_ctl.c b/pp_ctl.c
index 199df1f..39a5a6a 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -3608,7 +3608,8 @@ PP(pp_require)
SV *hook_sv = NULL;
SV *encoding;
OP *op;
- int saved_errno;
+ int doopen_errno;
+ dSAVE_ERRNO;
sv = POPs;
if ( (SvNIOKp(sv) || SvVOK(sv)) && PL_op->op_type != OP_DOFILE) {
@@ -3922,13 +3923,13 @@ PP(pp_require)
}
}
}
- saved_errno = errno; /* sv_2mortal can realloc things */
+ doopen_errno = errno; /* sv_2mortal can realloc things */
sv_2mortal(namesv);
if (!tryrsfp) {
if (PL_op->op_type == OP_REQUIRE) {
- if(saved_errno == EMFILE || saved_errno == EACCES) {
+ if(doopen_errno == EMFILE || doopen_errno == EACCES) {
/* diag_listed_as: Can't locate %s */
- DIE(aTHX_ "Can't locate %s: %s", name, Strerror(saved_errno));
+ DIE(aTHX_ "Can't locate %s: %s", name,
/* Assume success here to prevent recursive requirement. */ |
From @LeontOn Sun, Dec 30, 2012 at 1:10 AM, Craig A. Berry <craig.a.berry@gmail.com> wrote:
That said, there are other things that can clobber errno, most Leon |
From cm.perl@abtela.comLe 29/12/2012 00:01, Leon Timmermans a écrit :
yes I'm afraid my rants muddle the message :-/ Let me try again. 0) I am very interested in programmatic error handling (meaning having 1) I take require as an example of an op/sub that dies/croaks on error. eval { some_sub_that_might_die_or_croak; 1 } or do { This was really intended as a plea to Yves to consider favorably my wish
possibly. In the meantime there are subs and ops around that don't throw
1) If a sub fails, it is allowed to modify This is possibly too costly as a general principle, but useful at least
It has served me well so far. I have not tested this on require of course. However because of the
that is close to my first draft wording for this bug report. Please I might live with a cure for the symptom though... |
From cm.perl@abtela.comLe 30/12/2012 01:10, Craig A. Berry a écrit :
Thank you! Now, as is well known, the reward for a job well done is more Taisha:~/perl/patches/badcarp $ Characteristics of this binary (from libperl): =================================================================== C:\Users\Administrator>type clobberingrequire.pl C:\Users\Administrator>C:\Perl64\bin\perl -w clobberingrequire.pl C:\Users\Administrator>C:\Perl64\bin\perl -V Platform: Characteristics of this binary (from libperl): C:\Users\Administrator> |
From @craigberryOn Sat, Dec 29, 2012 at 7:21 PM, Leon Timmermans <fawaka@gmail.com> wrote:
Good point. If I'm understanding all the macros in pp_require (but I |
From @craigberryOn Sat, Dec 29, 2012 at 8:22 PM, Christian Millour <cm.perl@abtela.com> wrote:
You're welcome, but I'm not going to do *all* your homework for you. |
From cm.perl@abtela.comLe 30/12/2012 04:53, Craig A. Berry a écrit :
Ouch. Please don't shoot the messenger, although I guess I deserved
Thanks for the hints. I'll try again :-) |
From @janduboisOn Sat, Dec 29, 2012 at 5:39 PM, Christian Millour <cm.perl@abtela.com>wrote:
Even then you still have the problem that any DESTROY method run while Cheers, |
From cm.perl@abtela.comLe 31/12/2012 18:27, Jan Dubois a écrit :
that is one of the reasons I believe that perl ops and primitives should Non ignorable errors raised during stack unwinding are a mess anyway and If an op really has a good reason to set or reset $! on success then
Could you please expand on this or give me a pointer to what you mean ? Best regards, and season greetings to all -Christian |
From @janduboisOn Wed, Jan 2, 2013 at 9:07 AM, Christian Millour <cm.perl@abtela.com>wrote:
http://perl5.git.perl.org/perl.git/blob/HEAD:/pod/perl5140delta.pod#l350 Cheers, |
From cm.perl@abtela.comLe 28/12/2012 19:51, bulk88 via RT a écrit :
found it : atoi. See why below.
Heartfelt thanks for your time and efforts on this. You are right on the G:\>type test_atoi.c On linux I get [cm@COS63 ~/badcarp]$ gcc tatoi.c On my machine (a 64bit Win7 R1) compiling with mingw 32 and 64 G:\testatoi>.\t32.exe I have run these two programs on a variety of WIN32 machines. The +----+----+----------------+-----+----------+--------------------+-----+ This would explain your difficulties in reproducing the problem. Back to Perl, the behavior described in the original report has nothing Any use of ________________________________________________________________ # from use of atoi in mg.c $! = 99; $! = 99; $! = 99; $! = 99; $! = 99; # from use of atoi in regcomp.c $! = 99; ________________________________________________________________ This is perl, v5.10.1 (*) built for i686-cygwin-thread-multi-64int This is perl 5, version 17, subversion 8 (v5.17.8) built for This ill-behavior of atoi is likely here to stay, given that all recent So, how to fix this ? The obvious substitute, strtol, is out because it A possible fix would be to add a Perl_my_atoi in numeric.c, on the model perl.h: numeric.c: I am willing to produce a patch and test files if this solution is Thanks for your time, and best regards, Christian. |
From cm.perl@abtela.comMicrosoft Windows [version 6.1.7601] C:\Users\cm>g: G:\>cd testatoi G:\testatoi>type tatoi.c G:\testatoi>set PATH=c:\strawberry-perl-5.16.2.1-32bit-portable\c\bin G:\testatoi>gcc -v tatoi.c -o t32 G:\testatoi>.\t32.exe G:\testatoi>set PATH=c:\strawberry-perl-5.16.2.1-64bit-portable\c\bin G:\testatoi>gcc -v tatoi.c -o t64 G:\testatoi>.\t64.exe G:\testatoi> On Linux : [cm@COS63 ~/badcarp]$ uname -a |
From cm.perl@abtela.comMicrosoft Windows [version 6.1.7601] .. G:\perls\blead\git\win32>set PATH=g:\SPPC\bin;%PATH% Program exited normally. Breakpoint 1, Perl_pp_subst (my_perl=0x7c7fe8) at ..\pp_hot.c:2142 Old value = 99 Old value = 0 Program exited normally. G:\perls\blead\git\win32> |
From @bulk88On Fri Jan 11 10:36:01 2013, cm.perl@abtela.com wrote:
Great work. I'm not sure what is the best way to fix it. My idea is, The other way mentioned was write implement atoi in a cross platform way Do some clibs have atoi written in ASM? which is faster, our/Perl's Questions and ideas for thought. |
From @nwc10On Fri, Jan 11, 2013 at 07:34:51PM +0100, Christian Millour wrote:
I've pushed a branch smoke-me/nicholas/match-vars-in-mg_len It's wasteful to be doing the numeric conversion on every read. Having had quite a good look at every instance of atoi(), I think that they A lot of the code in regcomp.c is like this: case '1': case '2': case '3': case '4': /* (?1) */ ie it's doing work twice - first time in atoi() to walk over the digits, *All* the code using atoi() also ignores overflow. That's a bug.
Thanks. That was my first question and you have already answered it.
As above, I think that it's a bug that overflow is ignored. So I think that
I suspect that the your code is faster because it's hard coded for base 10. On Fri, Jan 11, 2013 at 11:52:41PM -0800, bulk88 via RT wrote:
On atoi(), the Open Group says: The call atoi(str) shall be equivalent to: (int) strtol(str, (char **)NULL, 10) except that the handling of errors may differ. If the value cannot be http://pubs.opengroup.org/onlinepubs/009695399/functions/atoi.html and on strtol() they say In other than the C [CX] [Option Start] or POSIX [Option End] locales, http://pubs.opengroup.org/onlinepubs/009695399/functions/strtol.html Given that we would want to be using strtol() to parse numbers roughly So think that this rules out using strtol() On Thu, Aug 29, 2013 at 02:30:00PM +0200, Christian Millour wrote:
I agree that the errno bug is going to bite us.
I think that we should completely avoid calling the native atoi() (and
Agree. In as much as, I don't think that we should be wrapping it at all. I think that this is less effort than trying to wrap the existing C library
Agree. Effectively what I think we need is something that implements base 10, as in strtol(str, &end, 10); with a different overflow approach. I think that Perl_grok_number() *almost* #define IS_NUMBER_ZERO_BUT_TRUE 0x40 then it can be used directly (or wrapped) to give what we need. Note that its Nicholas Clark |
From @nwc10On Thu, Aug 29, 2013 at 02:13:58PM +0100, Nicholas Clark wrote:
blead now no longer uses atoi() to parse number match vars and $& at lookup
Looking further, I think that I'm wrong. In that, all (or nearly all) of the So I think the best solution is a function which behaves somewhat like size_t Perl_not_sure_what_name(const char *str, char *const *endptr); [but I might have got that *const * thing wrong] which parses the '\0' terminated base 10 string matching /\A([0-9]+)/ returning * (normally) the value, and a pointer to the first not-a-digit and then refactor the code to call it, removing atoi(), strtol() and strtoul() It's unsigned because I think all use cases for the 3 functions are actually Forbidding leading spaces and a plus sign will mean slight changes to what we The advantage of forbidding them is that the end pointer can then be used to Use size_t because I think that in all use cases atoi() is currently being Return 0 on parse failure and a very big size_t value on overflow because Nicholas Clark |
From cm.perl@abtela.comLe 02/09/2013 16:30, Nicholas Clark a écrit :
There is at least an other exception, specifically the recursive regexp and unless you have modified regcomp.c, the following code would handle case '-': /* (?-1) */ so you would have to implement explicit signed parsing there too.
|
From @nwc10On Mon, Sep 02, 2013 at 07:14:29PM +0200, Christian Millour wrote:
Yes, good point. I missed that. Nicholas Clark |
From @khwilliamsonBlead now has removed all uses of atoi() and kin, thanks to Jarkko Hietaniemi. Does that mean we can close this ticket? -- |
From cm.perl@abtela.comLe 23/07/2014 07:05, Karl Williamson via RT a écrit :
as the OP I have no objection. I will note that my original issue was also cured by Also the side discussion on require should move to #119555. Best regards, --Christian |
From @khwilliamsonThe original OP has agreed to close this |
@khwilliamson - Status changed from 'open' to 'resolved' |
Migrated from rt.perl.org#116118 (status was 'resolved')
Searchable as RT116118$
The text was updated successfully, but these errors were encountered: