$ast_print = sub {print "** $_[0] **\n"}; process_and_print(25, $ast_print); sub process_and_print { my $val = $_[0]; my $print_func= $_[1]; #..... processing .... &$print_func($val); }