2009-07-22 48 views
5

Tôi đang trong quá trình trả lời yêu cầu đấu thầu trên hợp đồng yêu cầu xử lý văn bản phong phú. Vấn đề chính là khách hàng muốn có thể chạy trên bất kỳ nền tảng UNIX (HPUX, Solaris, AIX, FreeBSD) hoặc Linux (SLES, RHEL) nào có thể hạn chế những gì tôi sử dụng để làm điều đó. Họ không muốn thực hiện cài đặt các công cụ bổ sung cần thiết.Có các nền tảng Unix trong đó Perl không được cài đặt theo mặc định không?

Tôi bị rách giữa Perl và awk. Tôi biết rằng Perl là một công cụ lý tưởng để xử lý văn bản (và tôi khá giỏi về nó) nhưng, trước khi tôi đưa ra phản hồi RFT rằng Perl sẽ được yêu cầu, tôi muốn tìm hiểu xem có ai đang chạy trên nền tảng hay không nơi Perl không được cài đặt theo mặc định.

Sẽ tiện lợi khi liệt kê những nền tảng đó trong RFT và cung cấp cho khách hàng tùy chọn theo cách nào họ muốn. Tôi có một hồi ức mơ hồ rằng nó không phải trên FreeBSD trong cài đặt mặc định và nó cũng có thể là các nền tảng không phải Linux cũng không có nó.

Bất kỳ công cụ nào khác có thể được đề xuất nhưng, với sự quen thuộc của tôi với Perl và awk, họ có thể sẽ là những người duy nhất trong danh sách rút gọn.

Trả lời

13

Bạn có thể nhận phiên bản Perl được biên dịch cho bất kỳ biến thể Unix nào. Perl không cần phải được cài đặt, nhưng có thể chạy bên trong thư mục của ứng dụng của bạn. Tôi sẽ gói Perl với phân phối của tôi, vì vậy bạn có thể đảm bảo rằng bạn đang chạy cùng một phiên bản.

Rất khó để viết kịch bản lệnh shell nền tảng hoàn toàn, mà không cần thử nghiệm trên hệ điều hành đích. Nếu bạn phát triển một kịch bản awk, bạn có thể sẽ phát triển bằng cách sử dụng biến thể GNU trên Linux, đó là một superset của POSIX awk. Tôi thường định cấu hình mã nguồn mở packages on Solaris và tôi liên tục tìm các vấn đề mà mọi người cho rằng bạn đang chạy phiên bản hiện đại của công cụ. Ví dụ, trên Solaris bash không phải là vỏ bourne tiêu chuẩn (/ bin/sh), và echo không nhận bất kỳ tham số nào. Nếu bạn cố gắng mã hóa với POSIX awk, bạn có thể thấy mình bị giới hạn bởi thư viện regex hoặc các quy ước thời gian.

Perl's artistic licens e cho phép bạn gói nó với chương trình của bạn, miễn là bạn làm theo một vài điều đơn giản như giữ nguyên bản quyền.

+0

Thực ra, đó là một ý tưởng hay (đóng gói trong thư mục con) vì nó cho phép tôi kiểm soát phiên bản mặc dù tôi sẽ phải gửi nhiều gói (hoặc một gói với nhiều thư mục con perl được chọn trong thời gian chạy, một cho mỗi nền tảng). Tôi sẽ kiểm tra giấy phép. +1. – paxdiablo

3

Hầu như mọi nix * (ngoại trừ một số cho không gian đĩa rất hạn chế) đã được cài đặt Perl. AFAIK, thậm chí là FreeBSD. Chỉ trong trường hợp nó không phải là, bạn có thể chuyển đổi chương trình Perl thành một thực thi mà sẽ không cần perl với PAR::Packer.

+1

Tại sao * thậm chí * FreeBSD? –

+0

@ Sinan, tôi đoán "thậm chí BSD" vì tôi có một ý nghĩ mơ hồ rằng họ không gửi nó như là tiêu chuẩn, nhưng thông qua các cảng. – paxdiablo

+2

@Pax Duh! Câu trả lời của anh ta có ý nghĩa sau đó. Tôi đã sử dụng FreeBSD kể từ phiên bản 5 và tất cả chúng đã cài đặt Perl theo mặc định. Hệ thống Perl có xu hướng cũ hơn các cổng Perl, nhưng có một kịch bản lệnh shell cho phép root chọn Perl sẽ được mặc định. –

2

ngay cả khi Perl có thể được cài đặt trên hầu hết mọi nền tảng * nix, chúng có thể không có cùng phiên bản, vì vậy hãy lưu ý điều này. Với yêu cầu mà nó cần để làm việc trên hầu hết * nix, bạn chỉ có thể viết mã với tiện ích shell +. Để phân tích tệp, awk + shell cũng có thể thực hiện công việc. bạn chỉ cần viết nó theo định dạng "di động". kiểm tra this để biết thêm thông tin

+1

một trong những mục tiêu của Perl (không giống như nhiều ngôn ngữ khác) là rất tương thích giữa các bản phát hành, vì vậy chỉ cần viết cho phiên bản tối thiểu. –

+1

Tôi đoán đây sẽ là Perl 5.6. – innaM

+2

Có một vài (rất kỳ quặc) nền tảng không có cổng Perl tốt vượt quá 5,004, nhưng nói chung là 5,6 là mục tiêu tốt - nó được sử dụng từ năm 2000. – ephemient

4

Nếu khách hàng không có Perl trên máy của họ, bạn luôn có thể sử dụng Par::Packer để tạo tệp thực thi cho nền tảng đó. Điều này cũng có nghĩa là bạn không phải lo lắng về việc sử dụng các mô-đun, vì chúng cũng sẽ được bao gồm trong tệp thực thi.

+0

Được cảnh báo nếu mô-đun đặc biệt sử dụng giấy phép không cho phép như AGPL hoặc một cái gì đó. Bạn sẽ phải thực sự phân phối mã nguồn cho các mô-đun bạn sử dụng sau đó. Không khó, nhưng nó có thể là một nỗi đau. – Weegee

+0

Hmm, tôi cho rằng một, bạn có thể khôi phục nguồn từ tệp thực thi và, miễn là bạn không sửa đổi nó, CPAN nên được tính là làm cho nguồn có sẵn. –

+0

@Weegee, Par :: Trình đóng gói chỉ nén các tệp, do đó, nó không quan trọng để trích xuất bất kỳ mã nào. LGPL có thể yêu cầu bạn làm cho người dùng có thể xây dựng tệp thực thi mới với mã đã sửa đổi của họ, điều này có thể là một vấn đề. Cách dễ nhất để giải quyết vấn đề này là bao gồm bất kỳ thư viện nào có liên quan trong một tệp par riêng biệt. Tệp chính của bạn sau đó có thể tải tệp phụ. – daotoad

2

Mặc dù tôi đoán rằng tất cả các phiên bản hiện tại của hệ điều hành mà bạn đề cập đến cài đặt Perl, tất nhiên sẽ có các phiên bản cũ hơn không có và không có. Bạn cũng nên biết rằng ngay cả các công cụ như awk không được cài đặt thường xuyên trên các phiên bản UN * X rất cũ, vì nó và các công cụ lập trình khác là các tính năng bổ sung tùy chọn (với chi phí thêm). Tôi nhớ hệ thống Altos nơi thậm chí ngăn xếp TCP/IP là một hạng mục chi phí thêm, nhưng có lẽ bạn sẽ không được đi mà xa trở lại :-)

Bottom line: Nếu ứng dụng của bạn thực sự cần Perl, bạn nên kiểm tra xem nó được cài đặt (thông qua một kịch bản lệnh shell Bourne - nếu nó không hoạt động, bạn thực sự bị vặn) và nếu không cung cấp một số cách để cài đặt nó.

0

Các hợp đồng thương mại có xu hướng được đóng gói cùng với các phiên bản cũ của Perl.

Các vấn đề liên quan