http://qs1969.pair.com?node_id=11141227


in reply to Re^2: Extracting selected fields form file record (updated)
in thread Extracting selected fields form file record

Noone even mentioned File::Slurp! :)

If you must use a module for this, may I suggest Path::Tiny or File::Slurper? See File::Slurp is broken and wrong by Leon Timmermans for why.

Update:

Agree with haukex below to just do it idiomatically without a module: my $string = do { local $/; <$fh> }

See also: Any downsides to this slurp idiom? by haukex (2018 - prior discussion of this problem)

Replies are listed 'Best First'.
Re^4: Extracting selected fields form file record
by haukex (Archbishop) on Feb 08, 2022 at 12:25 UTC
    If you must use a module for this, may I suggest Path::Tiny or File::Slurper?

    While those modules are nice, I personally find it a bit difficult to keep track of all of the different modules' opinions on how to best slurp files. And considering that slurping a file takes at most two lines of pure Perl code and I remain in full control over layers etc., I no longer see the need to load a module just for that. The following only requires knowing some of the details of layers, such as knowing the effect of ${^OPEN}, using :encoding(UTF-8) instead of :utf8, and that UTF-16 files on Windows require the layers :raw:encoding(UTF-16):crlf (the latter two being documented in PerlIO and "open" Best Practices).

    my $all = do { open my $fh, '<', $filename or die "$filename: $!"; local $/; <$fh> }; my @lines = do { open my $fh, '<', $filename or die "$filename: $!"; <$fh> }; chomp @lines;