如何在Perl6中加载Perl5的Data::Printer?

2024-02-25

我一直在尝试加载 Perl5 模块Data::Printer进入 Perl6,但我遇到了困难。

我之前问过这个问题,无法使用 Inline::Perl5 将 Perl5 模块导入 Perl6 https://stackoverflow.com/questions/54487122/cannot-import-perl5-module-using-inlineperl5-into-perl6并确实从 @raiph 和 Elizabeth 那里得到了有用的建议,但被建议做另一个问题

con@con-VirtualBox:~$ perldoc -lm Data::Printer
/usr/local/share/perl/5.26.0/Data/Printer.pm
con@con-VirtualBox:~$ perl6
To exit type 'exit' or '^D'
> use Inline::Perl5;
Nil
> use lib:from<Perl5> '/usr/local/share/perl/5.26.0/Data/';
Nil
> my @a = 1,2,3,4
[1 2 3 4]
> p @a
===SORRY!=== Error while compiling:
Undeclared routine:
    p used at line 1

The p例程应该被加载,但它没有。

或者,我尝试加载,但这也会产生错误

> use Data::Printer:from<Perl5>
Unsupported type NativeCall::Types::Pointer<94859011731840> in p5_to_p6
  in method p5_to_p6_type at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line 298
  in method unpack_return_values at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line 375
  in method invoke at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line 446
  in method import at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line 776
  in sub EXPORT at /usr/lib/perl6/site/sources/130449F27E85303EEC9A19017246A5ED249F99E4 (Inline::Perl5) line 805
  in any statement_control at /usr/lib/nqp/lib/Perl6/Grammar.moarvm line 1

我不知道如何有效地将这个库加载到 Perl6 脚本中。


p5_to_p6 中不支持的类型 NativeCall::Types::Pointer

这是一个错误Inline::Perl 4 天前已修复 https://github.com/niner/Inline-Perl5/commit/c5cf4dce6bf9d4deec1da10d49602ae2524ed746.

如果您简单地这样做,您将不会获得这个最新版本zef install Inline::Perl5。 这是我所做的:

# Install a position independent version of perl, 
#   see  https://github.com/niner/Inline-Perl5/
$ perlbrew install perl-5.29.7 --as perl-5.29.7-PIC -Duseshrplib -Dusemultiplicity
$ perlbrew install-cpanm
$ perlbrew use perl-5.29.7-PIC
$ cpanm Data::Printer
$ git clone https://github.com/niner/Inline-Perl5.git
$ cd Inline-Perl5/
# Run: 'zef uninstall Inline::Perl5' first if you already have it installed
$ perl6 configure.pl6
$ make
$ make install # this installs the latest version of Inline::Perl5
$ cd ..

然后我用这个脚本测试了这个(p.p6):

use Data::Printer:from<Perl5>;
my @a = 1,2,3,4;
p @a;

Running perl6 p.p6现在给出:

[
    [0] 1,
    [1] 2,
    [2] 3,
    [3] 4
]

Edit:如果您已经安装了位置无关的perl二进制,上面的安装过程可以简化:

$ git clone https://github.com/niner/Inline-Perl5.git
$ cd Inline-Perl5/
$ zef uninstall Inline::Perl5
$ zef install . # or alternatively create the `Makefile` as above 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Perl6中加载Perl5的Data::Printer? 的相关文章

随机推荐

  • 方法调用作为另一个方法调用的参数?

    我是abap OO 的新手 但之前用java开发过 并编写了一个abap cl caretaker 类 它应该处理数据库表及其本地副本 实习生表 上的操作 我想进行以下方法调用 caretaker gt show table caretak
  • Rails:使用remote: true 停止页面刷新

    我有一个projects show html erb页 Aproject has many project messages并从projects show html erb页面 用户可以创建一个新的project message然而 当新的
  • 模型绑定新Datatables 1.10参数

    在 Datatables 1 10 中 ajax 服务器端参数从 public class DataTableParamModel public string sEcho get set public string sSearch get
  • 如何将 AdMob GADBannerView 添加到每个视图

    我正在我的应用程序中实现一个 AdMob 横幅UIViewController 并且它正在工作 但我有很多视图 我想在每个屏幕上显示一个横幅 我如何实现一个出现在每个屏幕上的横幅 我正在尝试这个AppDelegate swift dispa
  • 谷歌地图添加标记

    我想在 Android 中的 Google 地图上添加标记 任何人都可以帮我做到这一点 如果你们有示例代码 这会对我有很大帮助 并且还告诉我如何设置地图片段的大小 提前致谢 use addMarker like myMap addMarke
  • 使用 Python 装饰器跟踪递归深度

    我正在尝试编写一个装饰器来跟踪Python中递归函数的递归深度 以递归函数为例 例如 def fib n if n 0 return 0 if n 1 return 1 else return fib n 1 fib n 2 通常 要跟踪递
  • 哈希函数增量意味着什么?

    例如 我听说 MurmurHash2 不是 增量 的 但 MurmurHash3 是增量的 这是什么意思 为什么它有用 增量哈希函数适用于以下情况 如果先前 哈希消息 M 稍微更新为新消息 M 然后 应该相当快地计算更新后的哈希值 消息 M
  • 我对同一个类有两个 Kotlin 扩展方法,但具有不同的通用签名,编译器会抱怨

    我正在为同一个类编写两个扩展函数 class Something
  • 不区分大小写的 XPath contains() 可能吗?

    我正在运行 DOM 的所有文本节点 并检查 nodeValue 是否包含某个字符串 html body text contains test 这是区分大小写的 不过我也想抓住Test TEST or TesT 这可以通过 XPath 在 J
  • 错误:资源 android:style/TextAppearance.Material.Widget.Button.Borderless.Colored 未找到

    我正在尝试构建一个具有compileSdkVersion 25和targetSdkVersion 25的项目 但我需要将两者更改为23 因此在更改compileSdkVersion 23和targetSdkVersion 23后我收到错误
  • javascript try catch 在 Firefox 中不能完全工作

    有人可以解释一下为什么会这样吗 不会向我发出 出现问题 的警报 也不会向我发出 正常 的警报 它在镀铬中工作得很好 但在 Firefox 中 它只是退出 它确实在 Web 控制台中显示错误 try catch 的全部目的是确保如果我输入
  • 是否有一个 C++ 标准类可以在作用域退出时将变量设置为值

    在成员函数的范围内 我想临时将成员变量设置为某个值 然后 当这个函数返回时 我想将此成员变量重置为给定的已知值 为了避免异常和多次返回 我用一个简单的 RAII 类来完成它 它是在成员函数的范围内定义的 void MyClass MyMem
  • 根据特定文本字符串选择列

    我正在尝试组合一个宏 该宏将选择某些列并将它们粘贴到新工作表中 问题在于 列往往会根据人们认为合适的方式添加和删除 这会破坏绝对引用 我一直在尝试修改使用宏记录器生成的基本宏 但我没有运气根据其内容选择列 我有一张每天从我们的数据库生成的工
  • 在没有 gpg 签名的情况下验证 git 提交

    我们开始使用 git 作为 VCS 之前使用 SVN 并发现在 git 中您可以轻松区分更改和提交背后的真实人物 现在我们想知道为什么做出这样的设计选择以及是否有我们忽略的事情 让我们假设以下情况 每个人都已经向 gitlab 注册了 ss
  • Perforce API 的 .net 包装器?

    我目前正在 NET 4 中开发一个应用程序 它必须与 Perforce 服务器交互 我的团队之前使用 Perforce API 开发了某种包装器 但它缺少相当多的用例 并且无法正确处理异常 简而言之 这不是我真正可以按原样使用的东西 因为它
  • 如何在PowerShell中使用DTE?

    我正在尝试使用 PowerShell 来自动执行基于种子 例如 EDMX 文件或 DbContext 配置创建 n 层解决方案的过程 我希望能够打开框架解决方案 获取活动实例 并使用自动生成的代码填充项目文件 我正在尝试对提供的示例进行转码
  • 编写每周重复的时间间隔 (ISO 8601)

    我需要正确的每周 ISO 8601重复时间间隔 https en wikipedia org wiki ISO 8601 Repeating intervals 例如 重复 每个星期一 19 00 我已经尝试了很多例子 但没有一个能正常工作
  • 时间戳和合成时间偏移

    H 264 缓冲区是否包含时间戳和解码时间戳信息 当我们获得 H 264 nalu 数据时 其中是否包含计时信息 如果您指的是原始 H 264 NAL 单元 那么它们不包含计时信息 如果指的是 PTS DTS 之类的内容 MKV MP4 T
  • 尝试将日期插入日期时间列时出错

    我有一个表单试图将一些数据插入 SQL Server 2008 数据库 该表单有一个函数来获取当前日期 时间 然后将其插入数据库 如下所示 now date Y m d H i s q INSERT INTO TBL USERS usern
  • 如何在Perl6中加载Perl5的Data::Printer?

    我一直在尝试加载 Perl5 模块Data Printer进入 Perl6 但我遇到了困难 我之前问过这个问题 无法使用 Inline Perl5 将 Perl5 模块导入 Perl6 https stackoverflow com que