Tôi muốn một nhà phát triển khác chạy một kịch bản Perl mà tôi đã viết. Kịch bản lệnh sử dụng nhiều mô-đun CPAN phải được cài đặt trước khi kịch bản có thể chạy được. Có thể tạo kịch bản (hoặc số nhị phân perl
) để kết xuất danh sách tất cả các mô-đun bị thiếu không? Perl in ra tên của các mô-đun còn thiếu khi tôi cố gắng chạy tập lệnh, nhưng điều này là tiết và không liệt kê tất cả các mô-đun bị thiếu cùng một lúc. Tôi muốn làm điều gì đó như:Làm cách nào để tìm phụ thuộc vào mô-đun của tập lệnh Perl?
$ cpan -i `said-script --list-deps`
Hoặc thậm chí:
$ list-deps said-script > required-modules # on my machine
$ cpan -i `cat required-modules` # on his machine
Có một cách đơn giản để làm điều đó? Đây không phải là trình hiển thị, nhưng tôi muốn làm cho cuộc sống của nhà phát triển khác dễ dàng hơn. (Các mô-đun được yêu cầu được rải rác trên nhiều tệp, để tôi không dễ dàng tạo danh sách bằng tay mà không bỏ sót bất kỳ thứ gì. Tôi biết về PAR, nhưng có vẻ hơi quá phức tạp đối với những gì tôi muốn.)
Cập nhật: Cảm ơn, Manni, điều đó sẽ làm. Tôi không biết về %INC
, tôi chỉ biết về @INC
. Tôi giải quyết với một cái gì đó như thế này:
print join("\n", map { s|/|::|g; s|\.pm$||; $_ } keys %INC);
nào in ra:
Moose::Meta::TypeConstraint::Registry
Moose::Meta::Role::Application::ToClass
Class::C3
List::Util
Imager::Color
…
Trông như thế này sẽ làm việc.
Không, quét nguồn tĩnh không phải lúc nào cũng sai về phía bao gồm quá nhiều phụ thuộc. Nó cũng có thể bỏ lỡ những thứ như 'eval 'yêu cầu $ module" ', trong đó' $ module' được tính theo thời gian chạy dựa trên một số tiêu chí. – cjm