Перл не может пропарсить имя файла, если файл лежит в каталоге, названном по русски. Например "C:\Мои документы\1.jpg". Полное имя файла выводит "C:\М", а иногда правильно.
Может кто знает в чем дело?
Вот сорца:
my $foto = param ('foto');
if($foto ne "")
{
my $DIR = "../foto"; # не забудьте "chmod 777 pics"
my $filename;
$news= $news."|$foto|";
if ($foto !~ /([\w-]+ \. (?: gif | jpe?g ))$/ix) #только имя,путь выкидывается
{
$news= $news."$1 Файл должен быть jpg или gif";
$foto="NULL";
}
else
{
$filename="$1";
if (not sysopen FILE, "$DIR/$filename", O_EXCL | O_CREAT | O_WRONLY, 0444)
{
$news= $news."Hе могу создать $DIR/$1: $!";
}else{
binmode FILE;
print FILE while (<$foto>);
close FILE;
};
$foto="'$filename'";
};
};
Заранее благодарен!
>Перл не может пропарсить имя файла, если файл лежит в каталоге, названном
>по русски. Например "C:\Мои документы\1.jpg". Полное имя файла выводит "C:\М", а иногда правильно.>my $foto = param ('foto');
param ('foto') - это и есть fullpath???> if ($foto !~ /([\w-]+ \. (?: gif | jpe?g ))$/ix) #только имя,путь выкидывается
> {
>;
> } else {
> $filename="$1";
а)[\w] - работает только с англ.буквами (if not use locale)
б) при такой конструкции $1 - совсем не обязательно == ([\w-]+ \. (?: gif | jpe?g );
в) if ($foto =~ /^.*([^\/\\/]+ (gif | jpe?g ))$/i) { $fn = $1 }