Rex icon indicating copy to clipboard operation
Rex copied to clipboard

Don't use local @ARGV=...; <> for slurping file contents

Open ferki opened this issue 4 years ago • 0 comments

Migrated from rt.cpan.org #98871 (status was 'new')

Requestors:

From [email protected] (@eserte) on 2014-09-14 13:47:34 :

Rex::Config is using something like

@ARGV = ...; <>

to slurp file contents, and this may happen during compile time (e.g. read_ssh_config is called in import(), so a "use Rex::Config" would trigger this code). Unfortunately this means that a currently active <> loop would break. See https://github.com/cpan-testers/CPAN-Reporter/issues/20 for an issue where this actually happens.

Probably it's safer to use instead

do { open my $fh, $file or die $!; undef $/; <$fh> }

even if it's slightly longer. Or alternatively

use IO::File ();
join '', IO::File->new($file)->getlines;

ferki avatar Feb 10 '21 20:02 ferki