大大å言:「aPen 少看點, cPan 多看點ã€ï¼Œä»Šå¤©ä¾†ä»‹ç´¹é€™å€‹ FindBin Module。
å¯«ç¨‹å¼æ™‚,建立 libaray 是個好習慣,在 Perl 下é¢å¦‚æžœå¯«æˆ Perl Module ç•¶ç„¶æ˜¯æœ€å¥½äº†ï¼Œå¯æ˜¯è¾›è‹¦å¯«å¥½çš„ Perl Module,有時候沒辦法放進標準的 Include Path 目錄ä¸ï¼Œæœ‰æ™‚候是想è¦å’Œç¨‹å¼æœ¬èº«ä¸€èµ·æµå‚³ï¼Œé‚£é€™æ™‚å€™è¦æ€Žéº¼è¾¦å‘¢ï¼Ÿ
利用 use lib LIB_PATH å¯ä»¥åœ¨ @INC ä¸åŠ å…¥ Module 的路徑,這樣程å¼å°±å¯ä»¥æ‰¾åˆ°è‡ªå·±åŠ å…¥çš„ Module 了,例如:
use lib ‘/home/pesty/myperl/lib’;
這樣是ä¸éŒ¯å•¦ï¼Œå¯æ˜¯æŠŠè·¯å¾‘寫æ»åœ¨ç¨‹å¼è£¡é¢ï¼Œç¸½æ˜¯è¦ºå¾—怪怪的;而且,將來程å¼è¦å‚³çµ¦åˆ¥äººï¼Œä¹Ÿå¾ˆä¸æ–¹ä¾¿ã€‚æœ‰äº›äººï¼Œå°±åƒæˆ‘,就想把 use lib 後é¢çš„åƒæ•¸æ”¹æˆè®Šæ•¸ï¼Œçµæžœå°±æœƒé‡åˆ°é€™æ¨£çš„ error:
Empty compile time value given to use lib at ./lib_path.pl
原來 lib 是ä¸èƒ½æŒ‡å®š variable çš„ï¼Œå¾Œä¾†æ‰æ‰¾åˆ°åŽŸä¾†å¯ä»¥ç”¨ FindBin 這個 Module 來é¿é–‹é€™å€‹å•題;FindBin 會找出ç¾åœ¨ç¨‹å¼åŸ·è¡Œçš„絕å°è·¯å¾‘,把這個資訊å˜åˆ° $FindBin 裡é¢åŽ»ï¼Œæ‰€ä»¥ç”¨ $FindBin::Bin å°±å¯ä»¥å–å¾—ç¾åœ¨çš„程å¼è·¯å¾‘,更棒的是這個變數還å¯ä»¥æ‹¿ä¾†æŒ‡å®š @INC 的資訊:
#!/usr/bin/perl
use FindBin;
use lib “$FindBin::Bin/../lib”;use MyApp::Module;
藉著這樣,就å¯ä»¥æŠŠè‡ªå®šçš„ Perl Module 丟到 MyApp/lib, 執行檔丟到 MyApp/bin 之類的,以後åªè¦æŠŠ MyApp 整個包起來就å¯ä»¥ç§»åˆ°åˆ¥çš„地方也沒å•題了。
關於 FindBin 的進一æ¥èªªæ˜Žï¼Œè«‹åƒè€ƒ CPAN : FindBin,今天的 CPAN 教室就到這裡,大家å¯ä»¥å›žåŽ»çœ‹ aPen 了。