You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl OOP开发实例化对象报错:无法找到Stack01Lib包的new方法

问题原因和修复方法

  • 写法歧义导致方法解析失败
    你使用的间接对象写法new Stack01Lib()存在语法解析歧义,Perl会优先尝试将Stack01Lib()解析为函数调用,而非作为类名传入new方法,进而导致找不到类的new方法报错。标准写法应该使用类方法调用语法:类名->new()。
  • 接收变量类型错误
    类的new方法返回的是单个标量类型的对象引用,不能用数组@stack接收,需要声明为标量变量$stack。
  • 模块搜索路径适配问题(可选优化)
    你当前使用BEGIN { unshift @INC , '.';}是将运行脚本时的当前工作目录加入模块搜索路径,如果你在其他目录下执行该脚本,会出现找不到同目录下自定义模块的问题,推荐使用FindBin模块获取脚本所在的真实目录加入搜索路径。

修改后的完整代码

Main.pl

use strict;
use warnings;
# 更稳妥的模块搜索路径配置
use FindBin qw($Bin);
BEGIN { unshift @INC, $Bin; }
use Stack01Lib;

print "Hello, World!\n";
# 标准类方法调用写法,用标量接收对象
my $stack = Stack01Lib->new();
# 验证对象创建成功
print "对象创建成功:", ref $stack, "\n";

Stack01Lib.pm 无需修改,保持原有代码即可。


运行验证

修改后运行输出如下,代表运行正常:

Loaded
Hello, World!
对象创建成功:Stack01Lib

内容的提问来源于stack exchange,提问作者valentine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:36:03