The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Не открываются файлы - Perl, FreeBSD"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Не открываются файлы - Perl, FreeBSD"  
Сообщение от Андрей email(??) on 08-Июн-06, 11:35 
Здравствуйте!

Помогите чайнику решить проблему, пожалуйста! :) Имеются наборы файлов, содержимое которых надо пакетно обработать под FreeBSD перловым скриптом. Файлы сделаны частично досе, частично в винде (я так предполагаю). Во всяком случае, содержимое везде в cp866. Имена файлов частично длинные русские виндовые, частично в ДОС-формате (8.3, латиница). Когда я их переношу на фрю, то в mc корректно отображаются русские имена, а по ls видны вопросительные знаки вместо имен там где киррилица. Файлы с дос именами видятся корректно. Перегнал русские имена в транслит. Все стало видется корректно, а вот перловый open() все равно открывает только ту, часть, которая изначально была досовой. Скриптом укоротил файлам имена до 8 символов (из перла!). Обработка прошла нормально, а открываться они даже с такими именами не хотят... :(

С правами доступа на файлы и каталоги - все ок. Работаю через su. Ниже привожу кусочек кода, который пытается получить список и открыть все его элементы. Комменты специально не убирал. Помогите, плиз - перебрал все, что мог, а оно все равно не работает!!!

#!/usr/bin/perl

#opendir MYDIR,'.';
#@myfiles=grep !/^\.+$/,readdir MYDIR;
#@myfiles=readdir MYDIR;
#closedir MYDIR;

system('ls > mylist');

unless($success = open(MYDIR,"mylist"))
    {
     die "Файл не был открыт.\n Причина: $!\n."
    }

@myfiles=<MYDIR>;

close MYDIR;

unless($success = open(MYOUT,"+>/var/tmp/mycsvfile"))
    {
     die "Файл не был открыт.\n Причина: $!\n."
    }
    
foreach(@myfiles)
    {
         unless($success = open(MYTMP,$_))
        {
             die "Файл не был открыт.\n Причина: $!\n."}

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Не открываются файлы - Perl, FreeBSD"  
Сообщение от Vd on 08-Июн-06, 21:22 
Имена файлов частично длинные русские виндовые, частично в ДОС-формате (8.3,
>латиница).
Для начала, или поставь русскую локаль во фре(cp866), или(что лучше) переименуй все файлы.
По умлочанию во фре исплользуется KOI-8R, следовательно, если ты ставил уже локаль на КОИ, то переделывай ее на cp866, если не ставил - ставь =)
Статей на Опеннете куча


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Не открываются файлы - Perl, FreeBSD"  
Сообщение от chip email(ok) on 10-Июн-06, 12:53 
>Имена файлов частично длинные русские виндовые, частично в ДОС-формате (8.3,
>>латиница).
>Для начала, или поставь русскую локаль во фре(cp866), или(что лучше) переименуй все
>файлы.
>По умлочанию во фре исплользуется KOI-8R,

Не вводите в заблужение. По-умолчанию, используется локаль "C".


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Не открываются файлы - Perl, FreeBSD"  
Сообщение от Vd on 12-Июн-06, 00:07 
>>Имена файлов частично длинные русские виндовые, частично в ДОС-формате (8.3,
>>>латиница).
>>Для начала, или поставь русскую локаль во фре(cp866), или(что лучше) переименуй все
>>файлы.
>>По умлочанию во фре исплользуется KOI-8R,
>
>Не вводите в заблужение. По-умолчанию, используется локаль "C".

Прошу прощения, если был не точным.
Я имел в виду, что обычно фрюшную консоль русифицируют до KOI8R.


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "Не открываются файлы - Perl, FreeBSD"  
Сообщение от chip email(ok) on 12-Июн-06, 12:31 
>
>Я имел в виду, что обычно фрюшную консоль русифицируют до KOI8R.

Что еще за "руссификация"? - локализация.


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Не открываются файлы - Perl, FreeBSD"  
Сообщение от chip email(ok) on 10-Июн-06, 12:57 
>Здравствуйте!
>
>Помогите чайнику решить проблему, пожалуйста! :) Имеются наборы файлов, содержимое которых надо
>пакетно обработать под FreeBSD перловым скриптом. Файлы сделаны частично досе, частично
>в винде (я так предполагаю). Во всяком случае, содержимое везде в
>cp866. Имена файлов частично длинные русские виндовые, частично в ДОС-формате (8.3,
>латиница). Когда я их переношу на фрю, то в mc корректно
>отображаются русские имена, а по ls видны вопросительные знаки вместо имен
>там где киррилица. Файлы с дос именами видятся корректно. Перегнал русские
>имена в транслит. Все стало видется корректно, а вот перловый open()
>все равно открывает только ту, часть, которая изначально была досовой. Скриптом
>укоротил файлам имена до 8 символов (из перла!). Обработка прошла нормально,
>а открываться они даже с такими именами не хотят... :(

Какая ошибка выдаётся? cat <filename> обрабатывается успешно?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "Не открываются файлы - Perl, FreeBSD"  
Сообщение от Андрей email(??) on 12-Июн-06, 15:16 
>>Здравствуйте!
>>
>>Помогите чайнику решить проблему, пожалуйста! :) Имеются наборы файлов, содержимое которых надо
>>пакетно обработать под FreeBSD перловым скриптом. Файлы сделаны частично досе, частично
>>в винде (я так предполагаю). Во всяком случае, содержимое везде в
>>cp866. Имена файлов частично длинные русские виндовые, частично в ДОС-формате (8.3,
>>латиница). Когда я их переношу на фрю, то в mc корректно
>>отображаются русские имена, а по ls видны вопросительные знаки вместо имен
>>там где киррилица. Файлы с дос именами видятся корректно. Перегнал русские
>>имена в транслит. Все стало видется корректно, а вот перловый open()
>>все равно открывает только ту, часть, которая изначально была досовой. Скриптом
>>укоротил файлам имена до 8 символов (из перла!). Обработка прошла нормально,
>>а открываться они даже с такими именами не хотят... :(
>
>Какая ошибка выдаётся? cat <filename> обрабатывается успешно?

cat <filename> как и положено выводит содержимое файла. Содержимое в cp866, поэтому выводится псевдографикой, но там есть латиница, которая отображается корректно и по ней я вижу, что выводится именно этот файл. Перл ни на что не ругается, хотя, заглушек отладочных я вставил, вроде, везде, где смог придумать. На открытие файла стоит die, open ни на что не жалуется. Хотя сто процентов это именно он не открывает файлы как надо.

Уже просто интересно в чем там может быть дело. Проблему пришлось решить как в первом совете - переименованием файлов в формат латинский дос 8.3. Я-то и сам про это думал, но хотелось все сделать красиво и без лишней рутины. После этого все прочиталось на 5+.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "Не открываются файлы - Perl, FreeBSD"  
Сообщение от chip email(ok) on 12-Июн-06, 19:50 
>>>Здравствуйте!
>>>
>>>Помогите чайнику решить проблему, пожалуйста! :) Имеются наборы файлов, содержимое которых надо
>>>пакетно обработать под FreeBSD перловым скриптом. Файлы сделаны частично досе, частично
>>>в винде (я так предполагаю). Во всяком случае, содержимое везде в
>>>cp866. Имена файлов частично длинные русские виндовые, частично в ДОС-формате (8.3,
>>>латиница). Когда я их переношу на фрю, то в mc корректно
>>>отображаются русские имена, а по ls видны вопросительные знаки вместо имен
>>>там где киррилица. Файлы с дос именами видятся корректно. Перегнал русские
>>>имена в транслит. Все стало видется корректно, а вот перловый open()
>>>все равно открывает только ту, часть, которая изначально была досовой. Скриптом
>>>укоротил файлам имена до 8 символов (из перла!). Обработка прошла нормально,
>>>а открываться они даже с такими именами не хотят... :(
>>
>>Какая ошибка выдаётся? cat <filename> обрабатывается успешно?
>
>cat <filename> как и положено выводит содержимое файла. Содержимое в cp866, поэтому выводится псевдографикой, но там есть латиница, которая отображается корректно и по ней я вижу, что выводится именно этот файл. Перл ни на что не ругается, хотя, заглушек отладочных я вставил, вроде, везде, где смог придумать. На открытие файла стоит die, open ни на что не жалуется. Хотя сто процентов это именно он не открывает файлы как надо.
>
>Уже просто интересно в чем там может быть дело. Проблему пришлось решить
>как в первом совете - переименованием файлов в формат латинский дос
>8.3. Я-то и сам про это думал, но хотелось все сделать
>красиво и без лишней рутины. После этого все прочиталось на 5+.

1. Какой-то косяк с монтированием FS.
2. Система не локализована.

ps: в остальном задача напоминает подземный стук и разбираться нет никакого желания (данных всё равно не достаточно). Удачи

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "Не открываются файлы - Perl, FreeBSD"  
Сообщение от konst email(??) on 15-Июн-06, 03:42 
>Здравствуйте!
>
>Помогите чайнику решить проблему, пожалуйста! :) Имеются наборы файлов, содержимое которых надо
>пакетно обработать под FreeBSD перловым скриптом. Файлы сделаны частично досе, частично
>в винде (я так предполагаю). Во всяком случае, содержимое везде в
>cp866. Имена файлов частично длинные русские виндовые, частично в ДОС-формате (8.3,
>латиница). Когда я их переношу на фрю, то в mc корректно
>отображаются русские имена, а по ls видны вопросительные знаки вместо имен
>там где киррилица. Файлы с дос именами видятся корректно. Перегнал русские
>имена в транслит. Все стало видется корректно, а вот перловый open()
>все равно открывает только ту, часть, которая изначально была досовой. Скриптом
>укоротил файлам имена до 8 символов (из перла!). Обработка прошла нормально,
>а открываться они даже с такими именами не хотят... :(
>
>С правами доступа на файлы и каталоги - все ок. Работаю через
>su. Ниже привожу кусочек кода, который пытается получить список и открыть
>все его элементы. Комменты специально не убирал. Помогите, плиз - перебрал
>все, что мог, а оно все равно не работает!!!
>
>#!/usr/bin/perl
>
>#opendir MYDIR,'.';
>#@myfiles=grep !/^\.+$/,readdir MYDIR;
>#@myfiles=readdir MYDIR;
>#closedir MYDIR;
>
>system('ls > mylist');
ls -1 > ...
>
>unless($success = open(MYDIR,"mylist"))
>    {
>     die "Файл не был открыт.\n Причина: $!\n."
>
>    }
# это тоже, что и
open(MYDIR,"mylist") || die "...$!\n"
>
>@myfiles=<MYDIR>;
>
print "кол-во файлов = ", scalar @myfiles,"\n=======\n";
foreach my $file (@myfiles) {
print "FILE: \"$file\"\n";
}
>close MYDIR;
>
>unless($success = open(MYOUT,"+>/var/tmp/mycsvfile"))
>    {
>     die "Файл не был открыт.\n Причина: $!\n."
>
>    }
>foreach(@myfiles)
>    {
>         unless($success = open(MYTMP,$_))
>
>     {
>            
> die "Файл не был открыт.\n Причина: $!\n."}


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру