in reply to subroutine bewilderment: how to mimic builtins

Prototyping? Am I missing something here? This seems to work:

sub mylcfirst { my $x; if (@_) { $x = join "", @_ } else { $x = $_ } $x =~ s/(.)/\l$1/; return $x; } sub myuc { my $x; if (@_) { $x = join "", @_ } else { $x = $_ } $x =~ s/(.*)/\U$1/; return $x; } sub myreverse { my $x; if (@_) { $x = join "", @_ } else { $x = $_ } $x = reverse $x; return $x; } ### sample1 $_ = 'lrep esu'; $str = myreverse mylcfirst myuc; print $str."\n"; ### sample2 $_ = 'lrep esu'; $str = mylcfirst myreverse myuc; print $str."\n";

Sure, the code is a little clunky. And it doesn't take reverse in list context into account, but the idea is there. What part of this isn't what you are expecting?

Replies are listed 'Best First'.
Re^2: subroutine bewilderment: how to mimic builtins
by ikegami (Patriarch) on Feb 07, 2006 at 23:47 UTC
    myuc needs a prototype to handle $str = myuc myreverse 'lrep', 'esu'; appropriately. Same for myucfirst. See my reply.