2014-01-27 61 views
1

我試着從CPAN安裝DBD-SQLite-0.31模塊。我從CPAN下載了DBD-SQLite-0.31。我試着安裝它,它給了我一個先決條件的錯誤DBI模塊不在那裏。從CPAN安裝perl模塊時出錯

我已經從CPAN安裝了DBI模塊,然後安裝了DBD-SQLite-0.31

當我試圖運行perl的聲明 use DBI DBD::SQLite;,它給了一個錯誤

"DBD::SQLite" is not exported by the DBI module 
Can't continue after import errors at DBI.txt line 3 
BEGIN failed--compilation aborted at DBI.txt line 3. 

爲什麼發生錯誤?

當我嘗試調試它時,發現要運行語句use DBI DBD::SQLite;,DBD :: SQLite需要位於DBI目錄中,但都位於不同的目錄中。我甚至在DBI文件夾中複製了DBD :: SQLite,但問題仍然存在。 (這些都是我的野生猜測)

+0

您需要分別爲DBI和DBD :: SQLite的2個獨立的'use'語句。你不能導入一個,這是不正確的語法。 – 2014-01-27 14:51:11

+1

@ DA14,根本不需要DBD :: SQLite的'use'語句。當您連接到SQLite數據庫時,它將由DBI自動加載。 – cjm

回答

4

聲明use DBI是你想要的。

將模塊名稱後面的任何內容作爲參數傳遞給導入模塊的import方法。

+0

爲什麼它在導入時出錯 – Nitesh

+4

因爲'DBD :: SQLite'不是導入方法的有效參數。在大多數情況下,您提供了應在當前名稱空間中進行嵌套的子列表。 – gensym

3

發生什麼事是你不應該在單個use聲明中提到多個模塊。有關使用線的額外信息可以包括模塊的最小版本號或模塊應導出的項目列表。 perldoc -f use血淋淋的細節...

一般來說,你不會明確use DBD::SQLite;。它通常會在DBI->connect()的第一個參數中隱式加載。

+0

它工作:)。謝謝 – Nitesh

+0

任何方法或函數調用後請不要使用不必要的parens。只要有可能就將它們排除在外,這是很好的Perl風格,只有在Perl解析器無法識別你想要做什麼時才使用它。 – Mithaldu