#!/usr/bin/perl use strict; use warnings; use Data::Dumper; sub foo { return "foo:\t" . $_[0]; } sub contract_on { my $func = shift; my $sub = sub { my $i = shift; warn "need an integer!" unless ($i =~ /\d+/); return $func->($i); }; no strict 'refs'; no warnings; *{'foo'} = $sub; # woher bekommt man den Namen der Funktion? } print foo('X') . "\n"; contract_on \&foo; print foo('X') . "\n";