Perl6崩溃,“ Perl6 :: Object重载包中的左参数”

con*_*con 7 perl6

我正在用Perl6和inline :: Perl5编写一个Excel xlsx电子表格。

当我写一行

$file-location-ws.write($row, 2, $csv);
Run Code Online (Sandbox Code Playgroud)

Perl6崩溃,并显示错误消息

操作“ eq”:未找到方法,重载包Perl6 :: Object中的左参数,右参数在/usr/local/share/perl/5.26.0/Excel/Writer/XLSX/Worksheet.pm第2020行没有重载魔术。

在/home/con/.perl6/sources/130449F27E85303EEC9A19017246A5ED249F99E4(Inline :: Perl5)行674中的方法中,位于/ usr / lib / perl6 / site / sources / D38010D24322CE1B1E6FFD8A463F23Inline:E: ClassHOW)第195行在8.make_xlsx.p6第100行的块中

但如果我与文件名的文本字符串替换$ CSV 'Pumbaa Validation Plate 1 samplesheet.csv'从而

$file-location-ws.write($row, 2, 'Pumbaa Validation Plate 1 samplesheet.csv');
Run Code Online (Sandbox Code Playgroud)

它工作正常。显然,这不是解决方案,因为$csv它将改变。

为什么会发生此错误?我该如何解决?

con*_*con 5

这里的问题是该write函数需要一个类型的变量/容器,Str但是得到一个IO::Path

通过将要写入的变量分配为Str类型可以轻松解决此问题。

问题是错误消息没有给出任何提示。

  • 解决方案的“问题是错误消息没有给出提示”。确实。仅供参考,Larry Wall在P6文化中强调,我们认为[LTA](https://docs.perl6.org/language/glossary#index-entry-LTA)本身就是潜在的问题(错误),与基本错误。因此,该SO可能涉及*两个*问题-错误和消息。(也许也是文档。)在这种情况下,niner正在调查中,所以我认为目前无需进一步提交任何文件。但是请注意,如果您决定对邮件进行“单独”发布,那将是合理的。 (2认同)