sub lchompx { my $lchompstr=quotemeta(@_ > 0 ? $_[-1] : "\n"); my $change_in_place=!defined wantarray; my $default_argument=(@_<2); unless($change_in_place) { @_ = $default_argument ? $_ : @_; } if($change_in_place && $default_argument) { s/^($lchompstr)*// } else { $_[0] =~ s/^($lchompstr)*// } $_[0] }