in reply to Re: bullet proof SLURP file
in thread bullet proof SLURP file
how about autodie?
Unfortunately, it seems autodie does not cover readline, although it does cover read:
#!/usr/bin/env perl use warnings; use strict; use Data::Dump; package ReadFail { use parent 'Tie::Handle::Base'; sub READLINE { $! = 1; return } sub READ { $! = 1; return undef } } dd do { use autodie; open my $fh, '<', 'mydata.txt'; $fh = ReadFail->new($fh); local $/; <$fh>; }; eval { open my $fh, '<', 'mydata.txt' or die $!; $fh = ReadFail->new($fh); defined( my $data = do { local $/; <$fh> } ) or die $!; close $fh or die $!; dd $data; 1 } or warn "caught: $@"; eval { use autodie; open my $fh, '<:raw', 'mydata.txt'; my $size = -s $fh; $fh = ReadFail->new($fh); read($fh, my $data, $size); close $fh; dd $data; 1 } or warn "caught: $@"; __END__ () caught: Operation not permitted at rd2.pl line 23. caught: Can't read(GLOB(0x28a0888), <UNDEF>, 18): Operation not permit +ted at rd2.pl line 33
|
|---|