Tập lệnh port perl sang Windows


1

Tôi có một tập lệnh perl tuyệt vời mà tôi sử dụng để giải nén / giải nén tarball của một tệp, sau đó tương quan với hàng tá tệp để xử lý sự cố thông minh của hệ thống NAS. Bây giờ mọi người muốn xem phiên bản cho windows = /

Tôi là người hiểu biết về Linux, tân binh của Perl và hoàn toàn không thoải mái với việc viết kịch bản cho windows.

Các snags tôi thấy là: (1) vị trí cài đặt của perl (2) Tôi dựa vào đầu ra từ grepfind(3) snags tiềm năng giữa các phiên bản - XP, Vista ?, 7,2k3,2k8.

Không có may mắn cho đến nay w / Cygwin , hoặc phiên bản Windows của find. Tôi đã cài đặt ActivePerl trên Windows 7.

Suy nghĩ?

Câu trả lời:


2

Có thể đạt được các hàm Grep (hoặc giống như grep) bằng cách sử dụng

Bạn có thể sử dụng find , theo ghi chú của RedGrittyBrick ở trên (err, bên dưới? Anh ấy tiếp tục di chuyển).

Gần đây tôi đã chuyển một tập lệnh Windows Vista Perl sang XP và nó không phải là vấn đề lớn. Những khó khăn duy nhất tôi gặp phải là sử dụng các cuộc gọi 'exec' hoặc 'system' trong Perl để kích hoạt hoạt động của các chương trình MS Office. Trừ khi bạn đang làm một cái gì đó như thế này, bạn có thể sẽ không gặp khó khăn trong việc di chuyển qua lại giữa các HĐH Windows.

Tình cờ, ban đầu tôi không biết, khi tôi sử dụng ActiveState Perl, chức năng PPM cho phép bạn lấy các thư viện có nguồn mở cho các chức năng đặc biệt. Hãy chắc chắn và thử điều đó để tránh phát minh lại bánh xe.


Tôi tin rằng công cụ stackexchange được sử dụng bởi SuperUser.com ngẫu nhiên hóa thứ tự các câu trả lời bằng nhau không được chấp nhận, do đó, nhấn refresh sẽ thường thay đổi thứ tự câu trả lời. Đôi khi hơi ngạc nhiên và / hoặc khó chịu nhưng tôi có thể thấy nó có thể được nói là thậm chí không có bất kỳ sự thiên vị không công bằng nào khi mọi người đang đọc và nâng cao câu trả lời.
RedGrittyBrick

2
  1. Cài đặt vị trí của perl - không nên gây ra bất kỳ vấn đề.
  2. Thay thế việc sử dụng grep / find bằng các mô-đun Perl. Ví dụ: Tệp :: Tìm.
  3. Tôi đã không có bất kỳ vấn đề phiên bản Windows. Bạn đã nghĩ gì vậy?

2

Cygwin có findgrep.

Nếu findcung cấp cho bạn một số thông báo lỗi kỳ lạ, điều đó có nghĩa là bạn đang chạy một findlệnh khác .

Hãy thử chỉnh sửa của bạn PATHđể đặt Cygwin /bin/usr/binkhi bắt đầu hoặc chạy findbằng tên đường dẫn tuyệt đối, ví dụ /usr/bin/findthay vì find.


Nhưng vâng, những người khác đều đúng, bạn chắc chắn có thể thay thế findbằng File::Findgreplệnh bằng grepchức năng của Perl hoặc các toán tử khớp biểu thức chính quy
(ví dụ $line =~ /pattern/).

ActivePerl có thể tốt, nhưng Strawberry Perl dường như đang trở thành tùy chọn phổ biến nhất trên Windows, vì vậy đó là một lựa chọn khác nếu vì lý do nào đó ActivePerl không hoạt động.


Chắc chắn là đúng - có một phát hiện ... nhưng bây giờ mẹo sẽ là thay thế các `find $PWD -name "foo"`tham chiếu trong perl w / tham chiếu đến cygwin ... có ý kiến ​​gì không?
mbb

1

Cygwin thường là giải pháp dễ nhất cho loại vấn đề này. Bạn có vấn đề gì với nó?


Cảm ơn - Cygwin không tích findhợp sẵn. Điều đó hạn chế tính hữu dụng của nó trong trường hợp này. Tôi muốn cách dễ nhất để chuyển hoặc cách dễ nhất để tránh chuyển.
mbb

@mjb: Cygwin đã tìm thấy. Nếu findkhông hiệu quả, hãy thử /usr/bin/find.
Mikel

@mjb: như Mikel đã nói, Cygwin thực sự có find. Chạy lại trình cài đặt cygwin và đảm bảo gói findutils được chọn (bạn có thể nhập vào findutilshộp tìm kiếm để dễ dàng xác định vị trí của nó)
Russell Davis

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.