2016-02-19 60 views
4

我在寫一個Perl腳本,它接收數據並將其寫入Excel文件。我正在使用Excel::Writer::XLSX來做到這一點。如何在我想給別人的perl腳本中使用CPAN模塊?

我希望編寫腳本,然後將其交給我的團隊的其他成員,以便我們可以在需要時使用它來編譯數據。

我有這幾個問題:

  1. 做我的同事們需要有模塊安裝的腳本工作?

  2. 如果不是,我該如何將這個模塊包含在腳本中才能提供給他們?

  3. 有沒有更好的方式來做到這一點,使用我選擇的模塊?

+0

參見http://stackoverflow.com/q/4741142/2766176 –

回答

5

有幾種方法可以做到這一點。一種選擇是將指定依賴關係的Makefile.PL放在一起。這使您可以將腳本捆綁爲分佈。例如。

use ExtUtils::MakeMaker; 

WriteMakefile(
    ABSTRACT   => 'myscript creates Excel files', 
    AUTHOR   => 'A.U. Thor', 
    EXE_FILES   => [ 'myscript' ], 
    NAME    => 'myscript', 
    VERSION   => '1.2.3', 

    PREREQ_PM => { 
     'Excel::Writer::XLSX' => '0.88', 
    }, 
); 

然後,人們可以做perl Makefile.PL將通知他們的依賴關係。如果您執行make dist並分發生成的存檔文件,則他們還可以使用cpanm來安裝腳本及其依賴項。

另一種選擇是放在一起cpanfile。然後,收件人可以使用諸如cpanm之類的工具安裝所有依賴項。

現在,如果您要將腳本分發給通常不使用Perl的用戶,並且希望他們只需點擊並運行等,則可能需要查看pp

+1

我不認爲你或者布賴恩已經解決了OP的具體問題 – Borodin

3

很久以前,我寫了一個叫做scriptdist的程序,將一個單文件程序變成一個類似CPAN的發行版,並附有一個構建文件。這樣你可以把它作爲一個檔案傳遞出去,人們可以像對待任何其他CPAN分配一樣對待它。它基本上自動化what Sinan posted。我寫了關於它的Dr. Dobbs

有一個技巧,你可以使用,如果你想傳遞檔案。 cpan工具可以從當前目錄安裝。這將得到的依賴關係(其中,被依賴關係的性質,是必填項):

$ cpan . 

這樣的話,你可以安裝你的程序和它的依賴沒有把任何一個CPAN般的倉庫。

+1

我不認爲你或思南已經解決了OP的具體問題 – Borodin

+3

我不同意。我不認爲你的回答會改善思南和我所說的話,而你給他的同事帶來更多的問題而不是必要的事情。 –

+0

你可能是對的,也許我誤解了原來的問題。但在這種情況下,尤其是當你忽視OP的三個問題時,我認爲這對於準確描述你正在回答的問題將有很大的幫助 – Borodin

-4

很遠不清楚,你需要知道

做我的同事們需要有模塊安裝的腳本的工作是什麼?

我認爲,很明顯,你的同事需要訪問你的代碼能夠利用它

目前尚不清楚你所寫的內容,但如果你已經創建了一個模塊,那麼任何程序訪問到您的模塊文件可以簡單地use它訪問其功能

如果不是,我該如何包裝模塊與腳本給它們?

您的「如果不是」尚不清楚。如果這是你寫的手段「如果他們不需要安裝爲腳本的工作模塊」,我懷疑你的意圖

「我怎麼包與模塊腳本「你問的是如何創建一個模塊,或者你已經有一個?通常情況下,模塊由誰寫與use聲明

腳本如果你有一個模塊的程序員訪問和你希望其他人能夠與use加載它,那麼它必須出現在他們的@INC列出的目錄之一陣列。如果你在單獨的系統上工作,那麼最好創建一個包,你可以根據需要進行修改,並讓其他人更新。

是否有更好的方式來使用我選擇的模塊?

您是指Excel::Writer::XLSX還是您自己的模塊?

如果Excel::Writer::XLSX正在做你所需要的,那麼你可能不會改變。但是如果你在某種程度上遇到了問題,那麼你需要提出一個新問題並描述這些問題

相關問題