Also ich hatte eine einfache ucwords-Funktion für Perl, die ich eine Weile hatte, und wollte es erweitern, das ist, was ich mir ausgedacht habe, ist das die Art, wie ich meine Funktionen bauen sollte, um optional zu arbeiten Parameter?Ist das der Weg, um Perl Subroutinen zu erstellen?
Original:
sub ucwords{
$str = @_[0];
$str = lc($str);
$str =~ s/\b(\w)/\u$1/g;
return $str;
}
Extended:
sub ucwords{
if(@_[0] ne undef){#make sure some argument was passed
@overloads = (0,1,2,3);
$str = @_[0];
if(@_[1] eq undef || @_[1] eq 0){ #default is to lowercase all but first
$str = lc($str);
$str =~ s/\b(\w)/\u$1/g;
return $str;
}else{ #second parameters
if(!grep $_ eq @_[1], @overloads){ die("No overload method of ucwords() takes "[email protected]_[1]." as second parameter."); }
if(@_[1] eq 1){ $str =~ s/\b(\w)/\u$1/g;} #first letter to upper, remaining case maintained
if(@_[1] eq 2){ $str = lc($str); $str =~ s/(\w)\b/\u$1/g;} #last letter to upper, remaining to lower
if(@_[1] eq 3){ $str =~ s/(\w)\b/\u$1/g;} #last letter to upper, remaining case maintained
return $str;
}
}else{
die("No overload method of ucwords() takes no arguments");
}
}
Psy
tl; dr, aber tut nicht Ihr Code nur das? 'join '' map {ucfirst} split/(\ s +)/$ string'? – Ether
@Psytronic sollten Sie lesen "perldoc perlsub": http://perldoc.perl.org/perlsub.html –
Danke für den Rat, ich war nicht besonders auf der Suche nach Kommentaren in Bezug auf die Funktion selbst obwohl, ich weiß, es gibt wahrscheinlich besser Es gab mehr Kommentare über die Art, wie ich es gemacht habe, weil ich nicht von Anfang an etwas falsch machen und es immer wieder wiederholen wollte. – Psytronic