РЕШЕНО [perl] опасные символы в названиях файлов (unix)

Модератор: Модераторы разделов

Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

РЕШЕНО [perl] опасные символы в названиях файлов (unix)

Сообщение gcc »

как заменить опасные символы в названиях файлов (unix) и URL(httpd)?


есть файл, в название его есть пробелы и другие опасные символы (в том числе русские буквы)

название файла содержится в массиве...

Код: Выделить всё

Vitotronic 100-GC1 + Vitotronic 300-K(4).htm


когда я хочу открыть такой файл, то мне пишет ошибку, что нет файла, потому что название файла обрезалось из-за того что в названии есть пробел и другие символы...



я пробовал так

Код: Выделить всё

sub name_file {

 my $file = shift;

 $file =~ s/ /_/sig;
# $file =~ s/././sig;
 $file =~ s/\//_/sig;

 $file =~ tr/абвгдзийклмнопрстуфхцъыьАБВГДЗИЙКЛМHОПРСТУФХЦЪЫЬ/abvgdzijklmnoprstufhc\"y\'ABVGDZIJKLMNOPRSTUFHC\"Y\'/;

# " "=> "_", "."=> ".", "/"=> "_"

return $file;

}


но файл все равно не открылся


вот есть для URL

Код: Выделить всё

 $tr = array(
        "А"=>"a","Б"=>"b","В"=>"v","Г"=>"g",
        "Д"=>"d","Е"=>"e","Ж"=>"j","З"=>"z","И"=>"i",
        "Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",
        "О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t",
        "У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"ts","Ч"=>"ch",
        "Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"",
        "Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b",
        "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
        "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
        "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
        "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
        "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
        "ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
        " "=> "_", "."=> ".", "/"=> "_"
  );


но это файл, тоже, не открыло..
Спасибо сказали:
Nymin
Сообщения: 1095
Статус: -
ОС: GNU/Linux

Re: РЕШЕНО [perl] опасные символы в названиях файлов (unix)

Сообщение Nymin »

потому что пробелы и прочие надо экранировать
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: РЕШЕНО [perl] опасные символы в названиях файлов (unix)

Сообщение NickLion »

Что-то Вы неправильно делаете:

Код: Выделить всё

my $file;
open( $file, '>', 'Файл з українськими літерами!.txt' );
print $file 'some text for example';
close( $file );

Работает.
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Re: РЕШЕНО [perl] опасные символы в названиях файлов (unix)

Сообщение gcc »

да, я ошибся, все работает, ошибка была в другом....
Спасибо сказали: