in reply to Re^2: problem with Crypt::PBKDF2
in thread problem with Crypt::PBKDF2
map { $_ . '=' . sanitize($cgi->param($_)) } sanitize($cgi->param())
Assuming the call to $cgi->param() returns a list1, this list is first passed to sub sanitize which returns a scalar, so the input to map will only ever be a single value.
Actually, it gets worse. The $ prototype to sub sanitize coerces the argument list into a scalar, so if a list of, say, 3 values is passed in, $s will have the value 3!2 Removing the prototype helps, but you still get only a single value. You need something like a second map:
map { $_ . '=' . sanitize($cgi->param{$_}) } map { sanitize($_) } $cgi +->param()
Also note that the $cgi->multi_param() method is preferred to the $cgi->param() method when a list is returned.3
And if the call to $cgi->param{$_} can itself return a list and not just a scalar, then yet another level of looping will be needed.
1It may return a list or a scalar, depending on how the script was invoked. See “Fetching the names of all the parameters passed to your script” in CGI.
2See Far More Than Everything You've Ever Wanted to Know about
Prototypes in Perl for the details.
3See the warning in “Fetching the value or values of a single named parameter” in CGI.
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: problem with Crypt::PBKDF2
by jamroll (Beadle) on Sep 16, 2017 at 18:33 UTC | |
by Athanasius (Archbishop) on Sep 17, 2017 at 06:24 UTC |