#!/usr/bin/perl use strict; use warnings; sub try (&@) { my ($try, $catch, $finally) = @_; eval { &$try }; if ($@) { local $_ = $@; &$catch; } &$finally if defined $finally; } sub catch (&@) { return @_; } sub finally (&) { return shift; } try { print "ahoj\n"; die "ahoj"; } catch { print "chycena vyjimka $_"; } finally { print "blok finally\n"; }; try { die "vyjimka"; } catch { print "chycena vyjimka $_"; };