Перенести скрипт на Perl в Windows


1

У меня есть отличный Perl-скрипт, который я использую, чтобы распаковать / распаковать архив с файлом, а затем сопоставить более десятка файлов для интеллектуального устранения неполадок в системе NAS. Теперь люди хотят видеть версию для Windows = /

Я разбираюсь в Linux, новичок в Perl и совсем не знаком со сценариями для Windows.

Коряги я вижу , являются: (1) установить местоположение Perl (2) Я полагаюсь на выходе из grepи find(3) потенциальные коряги между версиями - XP, Vista, 7,2k3,2k8?.

Пока не повезло с Cygwin или Windows-версией find. У меня ActivePerl установлен на Windows 7.

Мысли?

Ответы:


2

Grep (или grep-подобные) функции могут быть достигнуты с помощью

Вы можете использовать find согласно примечанию RedGrittyBrick выше (ошибаться, ниже? Он продолжает двигаться).

Я недавно портировал сценарий Perl для Windows Vista в XP, и это не страшно. Единственные проблемы, с которыми я столкнулся, - это использование в Perl «exec» или «системных» вызовов для запуска работы программ MS Office. Если вы не сделаете что-то подобное, вы, вероятно, не столкнетесь с трудностями при перемещении назад и вперед среди ОС Windows.

Кстати, я изначально не знал, когда использовал ActiveState Perl, функцию PPM, которая позволяет вам использовать библиотеки с открытым исходным кодом для специальных функций. Обязательно попробуйте это, чтобы избежать повторного изобретения колеса.


Я считаю, что механизм стека обмена, используемый SuperUser.com, рандомизирует порядок непринятых ответов с одинаковым количеством баллов, поэтому нажатие кнопки «Обновить» часто меняет порядок ответов. Иногда это немного удивляет и / или раздражает, но я вижу, что можно сказать, что можно было бы сгладить любые несправедливые предубеждения, когда люди читают и голосуют против.
RedGrittyBrick

2
  1. Место установки Perl - не должно вызывать проблем.
  2. Замените использование grep / find на модули Perl. Например, File :: Find.
  3. У меня не было проблем с версией Windows. Что у тебя было на уме?

2

Cygwin имеет findи grep.

Если findвы получаете какое-то странное сообщение об ошибке, это означает, что вы запускаете другую findкоманду.

Попробуйте отредактировать свой, PATHчтобы поставить Cygwin's /binи /usr/binв начале, или запустить, findиспользуя абсолютный путь, например, /usr/bin/findвместо find.


Но да, другие правы, вы, безусловно, можете заменить findна File::Findи grepкоманду с помощью grepфункции Perl или операторов сопоставления регулярных выражений
(например $line =~ /pattern/).

ActivePerl, вероятно, в порядке, но Strawberry Perl, похоже, становится самым популярным вариантом в Windows, так что это еще один вариант, если по какой-то причине ActivePerl не работает.


Определенно верно - есть находка ... но теперь хитрость заключается в замене `find $PWD -name "foo"`in perl ссылками на cygwin ... есть идеи?
Мб

1

Cygwin, как правило, является самым простым решением проблемы такого типа. Какие проблемы у вас были с этим?


Спасибо - Cygwin не имеет findвстроенного. Это ограничивает его полезность в этом случае. Я либо хочу самый простой способ портировать или самый простой способ избежать портирования.
Мб

@mjb: Cygwin нашел. Если findне работает, попробуйте /usr/bin/find.
Микель

@mjb: как сказал Микель, Cygwin действительно имеет find. Снова запустите установщик cygwin и убедитесь, что выбран пакет findutils (вы можете ввести его findutilsв поле поиска, чтобы легко найти его)
Рассел Дэвис,

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.