這個指令可以檢查 foo.pl 的語法:

perl -cw foo.pl

#=> foo.pl syntax OK

寫 application 的時候,會把源碼整理成許多 .pm,這時卻沒辨法使用 perl -cw *.pm 一次做所有檔案的文法檢查。因為 perl 只預期第一個參數是程式名字,剩下的全成了程式的參數 (@ARGV) 了。

這時要加上一些 shell scripting 來簡化麻煩的事:

find lib -type f -name '*.pm' | xargs -I % perl -Ilib -cw %

zsh 可寫:

foreach i (`find lib -type f -name '*.pm'`) { perl -Ilib -cw $i }

為求方便,我另外寫了個 perl-check-syntax 程式來做這件事:

#!/bin/zsh
for f in $*
perl -Ilib -cw $f

使用方法如

perl-check-syntax *.pm
perl-check-syntax lib/*.pm