2008-11-04 3 views
6

Tôi có một chương trình C với trình thông dịch Perl được nhúng. Tôi muốn có thể biên dịch trước một số mã Perl từ bên trong chương trình. Làm thế nào để làm điều đó?Làm cách nào để biên dịch mã Perl trong chương trình C?

Lý do (nếu có ai quan tâm) là có thể biên dịch nó một lần, lưu trữ cây phân tích cú pháp và thực thi nhiều lần (miễn là mã được biên dịch không thay đổi).

Cảm ơn! Madhu

PS: Tôi đang sử dụng Perl-5.8, mặc dù nó sẽ là tốt để biết nếu Perl-6.0 làm cho điều này dễ dàng hơn trong bất kỳ cách nào.

+0

giải quyết lý do của bạn, bạn có đang nhúng Perl chỉ để lưu trữ cây phân tích cú pháp và do đó giảm thời gian khởi động không? Hay chương trình C có làm gì khác không? Nếu nó chỉ cho thời gian khởi động, có những cách khác để làm điều đó. – Schwern

Trả lời

11

Đây là hành vi mặc định khi bạn embed the Perl interpreter in a C program. Sau khi bạn đã chạy perl_parse() để phân tích cú pháp chương trình Perl, bạn có thể sử dụng perl_run() và call_argv() hơn và hơn với cùng một chương trình Perl được phân tích cú pháp.

0

Trong tham chiếu đến Perl 6, nó không hoàn chỉnh. Nhưng 5.10.0 có thể có một số sửa lỗi hơn 5.8.

2

Bạn có thể sử dụng perlcc để tạo nguồn thực thi hoặc C.

Để biên dịch mã C, bạn cần sử dụng thư viện của perl (có thể là -lperl hoặc -llibperl).

+0

Nếu tất cả những gì bạn muốn là một tệp nhị phân thực thi, hãy sử dụng PAR để thực hiện điều đó. http://search.cpan.org/perldoc?pp – Schwern