package App::Tasker::Exec; sub _onmatch_fail { my ( $_codetext, $_valhref, $_taskname ) = @_; @_ = (); { my $FAIL_MATCH = 0; # match defaults to succeed my $evaltext = ''; my $epilog = ''; my $_newval = {}; while ( my ( $k, $v ) = each %$_valhref ) { $evaltext .= <{'$k'} = \$$k; EOT } $evaltext .= "# line 1 task[$_taskname]\n" . $_codetext; $evaltext .= $epilog; eval $evaltext; die $@ if $@; for my $k ( keys %$_valhref ) { $_valhref->{$k} = $_newval->{$k}; } return $FAIL_MATCH; } }