in reply to Archive::Extract - error handling

I could not reproduce this problem using a bogus myfile.tgz (I used a small text file). This script would die as expected.
#!/usr/bin/env perl use strict; use warnings; use Archive::Extract; my $ae = Archive::Extract->new( archive => 'myfile.tgz' ); my $ok = $ae->extract or die $ae->error;
If you are on an older version of Archive::Extract, it may be worth updating to the most current version of Archive::Extract and trying again. If you still encounter the problem, perhaps something like Try::Tiny could help,
#!/usr/bin/env perl use strict; use warnings; use Archive::Extract; my $ae = Archive::Extract->new( archive => 'myfile.tgz' ); my $ok; try{ $ok = $ae->extract; } catch { print "Caught!\n\n"; die $ae->error; }; print "This ran after try/catch!\n"; exit;

Replies are listed 'Best First'.
Re^2: Archive::Extract - error handling
by luxs (Beadle) on Sep 01, 2016 at 00:17 UTC
    This is a archive wich generate this strange error http://3dpdb.com/VLF20160618.tgz
      As documented, if pure perl can't extract the archive, the external command line tool is tried instead if available. tar xzf works fine on the file, but produces nothing.

      Confirmed by turning debugging on:

      #!/usr/bin/perl use warnings; use strict; use Archive::Extract; $Archive::Extract::DEBUG = 1; my $ae = Archive::Extract->new( archive => 'VLF20160618.tgz' ); if ($ae->extract) { use Data::Dumper; Dumper($ae->files); } else { warn "ERROR: " . $ae->error; } print "Still here\n";

      Output:

      # Extracting with ->_untar_at Unable to extract '/home/choroba/_/0/VLF20160618.tgz': at /home/choro +ba/perl5/lib/perl5/Archive/Extract.pm line 954. Archive::Extract::_untar_at(Archive::Extract=HASH(0x163e5b8)) call +ed at /home/choroba/perl5/lib/perl5/Archive/Extract.pm line 438 Archive::Extract::extract(Archive::Extract=HASH(0x163e5b8)) called + at ./1.pl line 10 at ./1.pl line 10. # Extraction method failed # Extracting with ->_untar_bin Running [/usr/bin/gzip -c -d -f /home/choroba/_/0/VLF20160618.tgz | /b +in/tar -tf -]... Running [/usr/bin/gzip -c -d -f /home/choroba/_/0/VLF20160618.tgz | /b +in/tar -xf -]... # Extraction succeeded Still here

      ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,
Re^2: Archive::Extract - error handling
by luxs (Beadle) on Sep 01, 2016 at 00:11 UTC
    Unfortunately, this script (Try::Tiny) do not caught anything.