in reply to help on this code below

A few comments:

foreach $key (sort {$a <=> $b} $query->param()) { # rearrange: next if ($query->param($key) =~ /^\s*$/); next if ($key !~ /^filetoupload_(\d+)$/); # next condition is a subset of the previous condition # i.e., $key cannot be empty AND match filetoupload_\d+ #next if ($key =~ /^\s*$/); $Number = $1; # only one matching group: ( ) if ($query->param($key) =~ /([^\/\\]+)$/) { $Filename = $1; $Filename =~ s/^\.+//; # hence, no $2 #$pxuser = $2; #$pxuser =~ s/^\.+//; $files{$Number} = $Filename; $File_Handle = $query->param($key); if (!$ALLOW_INDEX && $Filename =~ /^index/i) { print header;

Replies are listed 'Best First'.
Re^2: help on this code below
by sasidhardv (Initiate) on Oct 27, 2011 at 18:24 UTC
    what does this mean if ($query->param($key) =~ /([^\/\\]+)$/) { # is this removing spaces ?? and
    next if ($key !~ /^filetoupload_(\d+)$/);
    especially (\d+)$/ mean
      what does this mean if ($query->param($key) =~ /([^\/\\]+)$/) { # is this removing spaces ??

      The square brackets enclose a character class. The first character in that class is a caret, which negates the class. Each initial backslash escapes the following character. The plus sign matches one or more. The parentheses store whatever is matched. The dollar matches the end of the line. Putting it all together, "if parameter ends with one or more non-slashes, give me those non-slashes in $1.

      This is matching only - no substitution.

      and next if ($key !~ /^filetoupload_(\d+)$/); especially (\d+)$/ mean

      \d matches a digit. Here, caret matches the start of the string. Everything else is described above. Putting it together, if $key starts with "filetoupload_" and ends with digits, give me those digits in $1.