Mojo::Home调用spew方法报错:提示Mojo::File无此方法,求解答
问题原因与解决方法
错误原因
你遇到的问题是因为Mojolicious版本过低,spew方法是在较新的版本中才加入Mojo::File类的。旧版本的Mojo::File并未提供该方法,因此调用时触发报错。另外需要说明的是,Mojo::Home->new->path()返回Mojo::File对象的逻辑是正常的,核心问题出在版本不兼容上。
解决办法
有两种可行的处理方式:
升级Mojolicious版本
执行以下命令升级到最新稳定版:cpanm Mojolicious升级完成后,
Mojo::File会包含spew方法,你的原有代码即可正常运行。不升级版本,改用兼容写法
若暂时无法升级,可以借助Mojo::Util的spurt方法实现相同功能,修改后的代码如下:#!/usr/bin/env perl use Mojo::Home; use Mojo::Util qw(spurt); my $f = Mojo::Home->new->path('test.txt'); spurt 'test', $f;
另外,也可以直接使用Mojo::File完成文件写入,逻辑更清晰:
#!/usr/bin/env perl use Mojo::File; my $f = Mojo::File->new('test.txt'); $f->spew('test');
内容的提问来源于stack exchange,提问作者Struppi
相关产品推荐
相关产品推荐

