in reply to Re: Try::Tiny and -E
in thread Try::Tiny and -E

Thank you.


The way forward always starts with a minimal test.

Replies are listed 'Best First'.
Re^3: Try::Tiny and -E
by ikegami (Patriarch) on Dec 27, 2025 at 20:23 UTC

    Ways to address this:

    • You can convert to using the builtin feature.

      $ perl -E'try { 1/0 } catch ( $e ) { }; say "ok"' # Using 5.40 ok
    • You can follow add no feature qw( try );

      $ perl -MTry::Tiny -E'no feature qw( try ); try { 1/0 }; say "ok"' ok
    • You can use an older version of the "language" (even if you're using the 5.40 interpreter).

      $ perl -Mv5.38 -MTry::Tiny -e'try { 1/0 }; say "ok"' ok

      (5.10 would suffice for this program.)


    As you might have noticed, -E isn't forward compatible. Your program would have worked with 5.38, but it doesn't with 5.40. If it's not a throwaway program, it's safer to use

    -e'use v5.xx; ...'
    or
    -Mv5.xx -e'...'
    instead of
    -E'...' # XXX Not forward-compatible.

      You *could* also do this:
      perl -MTry::Tiny -E 'Try::Tiny::try { 1 / 0 } Try::Tiny::catch { print $_ };'
      which (as expected) generates:
      Illegal division by zero at -E line 1.

      Hope that helps.

      Thank you.


      The way forward always starts with a minimal test.