$substr = sub { if (@_ == 2) { return substr($_[0], $_[1]); } elsif (@_ == 3) { return substr($_[0], $_[1], $_[2]); } elsif (@_ == 4) { return substr($_[0], $_[1], $_[2], $_[3]); } else { require Carp; Carp::croak("Bad arguments for substr"); } }; print($substr->('abc', 1), "\n");