in reply to IPC::System::Simple: Why isn't my exception caught?

There is no error because the exit value for "cat $file | wc -l" is 0 (zero).

Change the command to "wc -l file", as you say, and you get the error.

use IPC::System::Simple qw( capture $EXITVAL); use strict; use warnings; use Try::Tiny; my $file = 'foo'; my $result; try { $result = capture("cat $file | wc -l"); } catch { print "Error: $_"; }; print "Exitval is $EXITVAL";

Replies are listed 'Best First'.
Re^2: IPC::System::Simple: Why isn't my exception caught?
by karlgoethebier (Abbot) on Nov 20, 2013 at 14:45 UTC

    D'oh! I should have known this.

    But surprisingly:

    user@SVN:/svn/dumps> cat foo cat: foo: Datei oder Verzeichnis nicht gefunden user@SVN-Prod1:/svn/dumps> echo $? 1 user@SVN:/svn/dumps> cat foo | wc -l cat: foo: Datei oder Verzeichnis nicht gefunden 0

    I admit, that i didn't ask efficiently.

    What i actually want to do is:

    qx(/usr/local/csvn/bin/svnadmin -q dump $repos | /usr/bin/gzip > $dump);

    Respectively:

    capture("/usr/local/csvn/bin/svnadmin -q dump $repos | /usr/bin/gzip > $dump");

    And i wanted to know (and trap the exceptions) if any part of my piped command fails.

    Some time ago i saw an example on PM that managed this using system and IPC::IPC::Open3. I didn't find the example yet.

    Thank you very much and best regards, Karl

    «The Crux of the Biscuit is the Apostrophe»