You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If STDERR is tied and does not implement a real filehandle, especially if FILENO is not implemented, then running IPC::Run with redirection fails. Here's a sample script which fails with the error message "Can't locate object method "FILENO" via package "MySTDERR" at /opt/perl-5.18.4/lib/site_perl/5.18.4/IPC/Run.pm line 1126.":
#!/usr/bin/perluse strict;
use warnings;
use IPC::Run qw(run);
#{ no warnings 'redefine'; *IPC::Run::_debug_fd = sub { }; }
{
packageMySTDERR;
use Symbol qw(geniosym);
subTIEHANDLE { returnbless geniosym, __PACKAGE__ }
subPRINT { shift; print@_ }
}
tie *STDERR, 'MySTDERR'ordie$!;
my$out;
run ["echo", "hello"], ">", \$out;
print"out is $out\n";
__END__
If IPC::Run's _debug_fd method is made into a no-op (see the commented out line), then operation is successful.
Probably the correct solution would be to check if the fileno() call is possible in _debug_fd() (using eval{} or ->can()), and just return undef otherwise.
Migrated from rt.cpan.org#102824 (status was 'open')
Requestors:
From srezic@cpan.org on 2015-03-17 13:56:24:
If STDERR is tied and does not implement a real filehandle, especially if FILENO is not implemented, then running IPC::Run with redirection fails. Here's a sample script which fails with the error message "Can't locate object method "FILENO" via package "MySTDERR" at /opt/perl-5.18.4/lib/site_perl/5.18.4/IPC/Run.pm line 1126.":
If IPC::Run's _debug_fd method is made into a no-op (see the commented out line), then operation is successful.
Probably the correct solution would be to check if the fileno() call is possible in _debug_fd() (using eval{} or ->can()), and just return undef otherwise.
From toddr@cpan.org on 2016-04-12 23:53:38:
perl recently (5.18?) made fileno get angry if a file handle wasn't open and fileno is called.
The text was updated successfully, but these errors were encountered: