Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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
关于在VS2013/VS2019构建后事件中运行perl的提示_Perl_Visual Studio 2013 - Fatal编程技术网

关于在VS2013/VS2019构建后事件中运行perl的提示

关于在VS2013/VS2019构建后事件中运行perl的提示,perl,visual-studio-2013,Perl,Visual Studio 2013,我还没有这方面的测试案例,而且还在挖掘中。 我创建了一个漂亮的二进制文件编辑perl脚本,它对一些二进制构建进行了反向注释,这些构建是我们使用的专用编译器的输出。我希望将此反向注释作为构建后步骤来完成。 当我在powershell中对二进制文件运行脚本时,它工作正常。 当我将其作为生成后事件运行时,它会崩溃: 1> Perl5LIB is C:/StrawberryPerl/perl/site/lib;C:/StrawberryPerl/perl/vendor/lib;C:/Stra

我还没有这方面的测试案例,而且还在挖掘中。 我创建了一个漂亮的二进制文件编辑perl脚本,它对一些二进制构建进行了反向注释,这些构建是我们使用的专用编译器的输出。我希望将此反向注释作为构建后步骤来完成。 当我在powershell中对二进制文件运行脚本时,它工作正常。 当我将其作为生成后事件运行时,它会崩溃:

1>  Perl5LIB is   C:/StrawberryPerl/perl/site/lib;C:/StrawberryPerl/perl/vendor/lib;C:/StrawberryPerl/perl/lib
1>  Invalid type 'Q' in pack at C:/StrawberryPerl/perl/lib/Config_heavy.pl line 1354.
1>  Compilation failed in require at C:/StrawberryPerl/perl/lib/Config.pm line 80.
1>  BEGIN failed--compilation aborted at C:/StrawberryPerl/perl/lib/Tie/RefHash.pm line 109.
1>  Compilation failed in require at C:/StrawberryPerl/perl/lib/Fatal.pm line 9.
1>  BEGIN failed--compilation aborted at C:/StrawberryPerl/perl/lib/Fatal.pm line 9.
1>  Compilation failed in require at C:/StrawberryPerl/perl/lib/parent.pm line 16.
1>  BEGIN failed--compilation aborted at C:/StrawberryPerl/perl/lib/autodie.pm line 6.
1>  Compilation failed in require at C:\APPSWARE\SuperMuxDummyDutTC\LogicDDRDLL\..\SmuxFixer.pl line 7.
到目前为止,我初步发现Visual Studio环境中的@INC未设置为与PowerShell环境相同的设置。。。所以我定义了PERL5LIB,它现在接收并报告与PowerShell中相同的@INC。。。但很明显,其他的东西是不同的。(我也会添加%25PATH%25,但目前它包含需要检查的字符串)

只是想知道是否还有其他人在构建后事件中使用Perl脚本,并对它们的维护和输入有一些指导。
我们在软件发行版中提供了一个不同于草莓Perl的Perl版本,因此我必须深入研究,看看是否有其他东西指向不同的Perl等


随着我了解更多信息,我将尝试更新此内容。

我确定此问题与$PATH相关。 我们的软件跟踪两个$PATH环境变量,一个是典型的%PATH%,另一个是Visual Studio环境变量,它(或曾经)保存在注册表中。 我们的版本更改软件更新了这两个版本,以便当用户更改版本时,运行时和Visual Studio可以找到所有的*.exe文件和*.dll包

我们在系统中发布了一个perl版本,在我的例子中,perl太旧了,所以我使用了最新的草莓perl版本。切换版本时,我们检测是否存在备用perl,并询问用户是否希望将该版本放在%PATH%中的第一位


我一定没能做到。出于某种原因,StrawBerryPerl中存在一种依赖性,它与%PATH%相关联,而不是@INC。我还发现,将PERL5LIB显式设置为指向StrawBerryPerls@INC PATH,将破坏我们的版本交换代码。目前,我不想深入探究确切的原因。简而言之,我认为这是一个%25路径%25问题。

感谢您的编辑。这些位置不应该在
PERL5LIB
中。这些是针对一个已经可以在那里找到它们的特定Perl安装的。PERL5LIB中应该有哪些位置?可以在那里找到的特定Perl安装的位置?如果它已经可以在那里找到他们,为什么他们需要在那里?因此,从您的评论中,我得到了一个“我做错了”好吧,这很有可能,但是2)如果PERL5LIB不提供一个路径让PERL搜索libsRe,那么PERL5LIB是做什么的“如果它已经可以在那里找到它们,为什么它们需要在那里?”,它们没有。这是我的观点。或者它们是由不同的
perl
安装的模块。同样不好用。Re“PERL5LIB中应该有哪些位置?”,如果您指示模块安装程序在非标准目录中安装模块,则应添加该目录的lib目录。在使用StrawberryPerl时,我从未使用过非标准目录,但权限较少的用户可能会.Re“在我的情况下,perl太旧了”,更准确地说,它是一个32位的构建,使用了64位构建的内部Config.pm。