Mitunter kommt es vor das man eine solche Funktion mit verschiedenen Parametern immer wieder mal braucht.
So das man Dateien mit 8 Stelligen Zahlen darstellen möchte und die Daten in dr Datei vielleicht
nur 3 stellig haben möchte.
Zunächst das komplette Beispiel:
#!/usr/bin/perl
#Fehlerausgabe an Browser
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
# Zahl die "expandiert" werden soll
my $zahl = 34;
# Ausgabe per Subroutinenaufruf
print my $expandierte_zahl = &expander("$zahl","6");
# Subroutine
sub expander {
my $laengenwert = '%' . '0' . $_[1] . 'd';
my $wert = sprintf ($laengenwert, $_[0]);
return $wert;
}
Hier wird nun mit dem Subroutinenaufruf print my $expandierte_zahl = &expander("$zahl","6");
die Zahl $zahl und die gewünschte Länge 6 an die Subroutine übergeben.
Diese empfängt die Werte in dem Standardarray @_ auf das mit $_[0], $_[1] usw. zugegriffen werden kann.
Um nun $laengenwert Dynamisch zusammenzusetzen bedient man sch der Stringverkettung wie hier
'%' . '0' . $_[1] . 'd' dargestellt. Durch die Punkte wird dann aus den Einzelteilen %06d
return liefert dann das Ergebnis der Geschichte zurück.