首页 > 解决方案 > Windows 上的 Perl - 当编码类型存储在变量中并使用 PAR::Packer 时,打开函数失败

问题描述

我有一个脚本在使用 Perl 时可以正常工作,但是当我使用 PAR::Packer 将其转换为 .exe 并运行它时失败(所有这些都在 Windows 上);

仅当我存储编码类型以在变量中打开文件时才会出现此问题。例子:

my $enc= "utf8";

open my $FH, "<:encoding( $enc )", $ARGV[0]
  or die "$!";

假设我提供的文件存在......无论我使用哪种编码类型或变量类型来存储编码类型,此代码每次都会失败。这仅在我对 open 函数中的编码进行硬编码时才有效(例如: "<:encoding(utf8)" )。我从$ ! 当这失败时。

怎么会这样?不知道为什么在使用 PAR::Packer 时会失败,但是当我直接使用 Perl 运行它时它工作正常。

我的解决方法是在 open 函数之后使用 binmode,但是不知道为什么上面的代码不起作用,这让我很生气。

我在 Windows 10 上使用 Perl 5.30.2。我也在使用最新的 pp 版本。

谢谢

标签: perlperl-packager

解决方案


推荐阅读