Похоже, вы пытаетесь получить имя файла, загруженного пользователем. Если вы используете CGI
модуль, то вот решение:
use CGI;
my $q = CGI->new();
my $filename = $q->param('userfile'); ## retrive file name of uploaded file
С инструкция :
Различные браузеры будут возвращать немного разные вещи для имени. Некоторые браузеры возвращают только имя файла. Другие возвращают полный путь к файлу, используя соглашения о путях компьютера пользователя. В любом случае, возвращаемое имя всегда является именем файла на компьютере пользователя и не связано с именем временного файла, который CGI.pm создает во время буферизации загрузки (см. Ниже).
Обновление:
Извините, раньше этого не замечал. Пожалуйста, добавьте use strict;
в начале сценария. Это заставит вас объявить все переменные. Вы увидите опечатку в print
выражении:
print "file name is $filename"; ## must be $filename
Чтобы объявить @allowedExtensions
, просто добавьте my
перед первым использованием:
my @allowedExtensions =("jpg","tiff","gif","eps","jpeg","png");
Также я считаю, что вам не нужно ;
в конце строк при печати заголовков HTTP:
print "Content-type: text/html
Cache-Control: no-cache
charset=utf-8\n\n";
И, пожалуйста, всегда use strict
. Это сэкономит вам кучу времени в будущем.