if ( (defined $request and $request>0 and $request<2000) and $account_num=~/^[Gg]\d{3}-\w{5,6}+/) { ... } #### if ( expense_in_range($request) and is_expense_account($x) ) { ... } sub expense_in_range { my $expense = shift; return ( defined $expense and $expense > 0 and $expense < EXPENSE_LIMIT ) ? 1 : 0; } sub is_expense_account { my $account = shift; return $account =~ /^[Gg]\d{3}-\w{5,6}+/ ? 1 : 0; } #### w(); x(); sub w { A; B } sub x { C; D } #### function foo: A -> B -> C -> D -> E -> F #### function foo: A -> B -> C -> D function bar: E -> F