Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Perl


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Perl

Выпуск № 38
от 20.04.2006, 09:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 127, Экспертов: 12
В номере:Вопросов: 1, Ответов: 1


Вопрос № 40337: Значит хочу для себя сделать простой скрипт, который бы искал в файлах фразу и заменял бы ее. Естественно, что в качестве файлов можно задавать и сами файлы и папки. Я знаю, что это реализовано во многих текстовых редакторах (у меня на данный м...

Вопрос № 40.337
Значит хочу для себя сделать простой скрипт, который бы искал в файлах фразу и заменял бы ее. Естественно, что в качестве файлов можно задавать и сами файлы и папки.
Я знаю, что это реализовано во многих текстовых редакторах (у меня на данный момент два имеет такую возможность), но еще раз повторю, мне хочется это сделать для себя.
Проблема встала такая. Все параметры естественно передаются через командую строку. Так вот, как мне определить чем является параметр папкой или файлом ? Если это папка я применяю операцию /* через которую перебираю все подпапки и файлы через рекурсию. Но проблема и заключается в том, что мне нужно как-то узнать, является ли этот параметр файлом или папкой. Если это приминить к файлу (/*), Perl попросту пропустит его, посчитает неправильным, в чем он абсолютно.
Делаю я это под Windows. В WINAPI, например, это можно узнать без труда, через FILE_ATTRIBUTE_DIRECTORY, если бы это бы UNIX, то там тоже имеется специальный флаг, значение которого без труда можно получить, но у меня Windows. Как можно это узнать в Perl ?
Отправлен: 15.04.2006, 08:56
Вопрос задал: RedDevil (статус: 9-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Thomas Arden
Здравствуйте, RedDevil!
делается это элементарно:

foreach (@ARGV) {
if (-f $_) {
# process argument as file
} elsif (-d $_) {
# process argument as directory
}
}

а вообще, для этого, imho, лучше использовать find & sed. сборки под винду есть (http://unxutils.sourceforge.net/)
Ответ отправил: Thomas Arden (статус: 1-ый класс)
Ответ отправлен: 15.04.2006, 16:24
Оценка за ответ: 5
Комментарий оценки:
Это фантастика :) Мне кажется я все больше влюбляюсь в этот язык :)
Я не ожидал, что это так легко :) Заслуженная "отлично".

"а вообще, для этого, imho, лучше использовать find & sed. сборки под винду есть (http://unxutils.sourceforge.net/) "
Да конечно это все есть, но зачем брать чужое, когда можно самому это написать :) ? Тем более Perl'у нигде не учат, а лучшее самообучения писать хоть что-нибудь, вот я пока его плохо знаю, буду стараться все сам писать. Ну а там и к модулям привыкну, надеюсь :)


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.30 (beta) от 09.04.2006
Яндекс Rambler's Top100

В избранное