Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迁移perl模块_Perl_Module_Perl Module - Fatal编程技术网

迁移perl模块

迁移perl模块,perl,module,perl-module,Perl,Module,Perl Module,假设我有一个perl模块Foo::Bar,它是用模块启动器启动的,在名称空间Foo::Bar下已经有几个包,现在我得出结论,这是一个错误的名称选择,希望将其命名为MyBetterName::Bar 是否有任何工具可以帮助实现此过程的自动化,而无需更换所有模块、POD、测试和示例。我知道,我可以编写一个perl脚本来实现这一点,但是我还是第一次编写perl模块,并且不太清楚应该解析哪些文件 我尝试了谷歌,但发现在我看来没有任何有用的东西足以在全球范围内取代Foo::Bar和Foo/Bar find

假设我有一个perl模块Foo::Bar,它是用模块启动器启动的,在名称空间Foo::Bar下已经有几个包,现在我得出结论,这是一个错误的名称选择,希望将其命名为MyBetterName::Bar

是否有任何工具可以帮助实现此过程的自动化,而无需更换所有模块、POD、测试和示例。我知道,我可以编写一个perl脚本来实现这一点,但是我还是第一次编写perl模块,并且不太清楚应该解析哪些文件


我尝试了谷歌,但发现在我看来没有任何有用的东西足以在全球范围内取代Foo::Bar和Foo/Bar

find -type f -exec perl -i -pe's{Foo(::|-|/)Bar}{MyBetterName${1}Bar}g;' {} +
然后重命名文件本身

find -depth -execdir rename 's/Foo/MyBetterName/g' {} \;

它已经很久没有更新了,但可能是这样的:谢谢@Matt,我明天会试试。@daxim,假设我们知道应该更新哪些文件。它甚至可以在vi中完成。是的,它只需稍加修改(包括hiffen)find-type f-exec perl-i-pe的{Foo(::;/|-)Bar}{MyBetterName${1}Bar}g;'{}+并添加此查找-depth-name“*”-execdir重命名为's/Foo/MyBetterName/g'{}\;谢谢@ikegami为我指出这一单一解决方案是的,当我说“/”时,我实际上想到了“-”,尽管“/”也很好