我在一个脚本run_PMseq.V8.pl调用了一些.pm文件
$perl -c run_PMseq.V8.pl
Subroutine new redefined at /mnt/lustre/user/wubin/01.Program/Scripts/01.script/GeneLab/PMSeq/package_V3/Add_mismatch.pm line 25.
Subroutine generate_shell redefined at /mnt/lustre/user/wubin/01.Program/Scripts/01.script/GeneLab/PMSeq/package_V3/Add_mismatch.pm line 32.
Subroutine get_all_shell redefined at /mnt/lustre/user/wubin/01.Program/Scripts/01.script/GeneLab/PMSeq/package_V3/Add_mismatch.pm line 133.
run_PMseq.V8.pl syntax OK
检查的时候发现这个错误。
后来才发现问题在这里:
package的名没有与pm文件的文件名一致。
应该改成:
perl">package Add_mismatch;
原因是,我在 run_PMseq.V8.pl脚本里面这样调用的:
perl">use Map_PMDB;
use Add_mismatch;
这样做的后果就是, 调用 Map_PMDB.pm的时候, 存在new,generate_shell,get_all_shell等方法。
当我调用“Add_mismatch.pm”的时候, 由于我写的是“package Map_PMDB”, 程序认为我调用的仍然是Map_PMDB,而Add_mismatch.pm中也存在new,generate_shell,get_all_shell等方法。
这就导致程序认为我将Map_PMDB模块中的new,generate_shell,get_all_shell等方法做了"redefine(重定义,重写)"操作。