Hello drose2211,
The sprintf function applies the formatting specified in the template supplied as its first argument, to produce a string using the remaining arguments. In this case, the template ' %d/%d ' means: print a space, followed by the next argument formatted as an integer, followed by a slash, followed by the next argument formatted as an integer, followed by a space. Without the sprintf function, the code would be longer and less elegant:
$line =~ s{ \s (M?\d{2}) / (M?\d{2}) \s }
{ ' ' . int(convert($1)) . '/' . int(convert($2)) . ' ' }xeg
+;
(Perl’s printf and sprintf functions are derived from their equivalents in C. In Perl, there is also print, which does not take a template, but there is no corresponding sprint.)
Hope that helps,
| [reply] [d/l] [select] |
drose2211: Further to Athanasius's post: Note also that the s/// substitution operator needs the /e modifier to be able to evaluate an arbitrary expression in its replacement block. See s/PATTERN/REPLACEMENT/ in Regexp Quote-Like Operators in perlop.
Give a man a fish: <%-{-{-{-<
| [reply] [d/l] [select] |