gpt4 book ai didi

perl - 不确定 Perl 数据类型引用

转载 作者:行者123 更新时间:2023-12-02 07:40:15 24 4
gpt4 key购买 nike

我正在尝试使用 Net::IMAP::Client 编写一个输出电子邮件正文的脚本,但到目前为止,我尝试从模块输出的每个变量都显示为:ARRAY(0x86f5524) 或给出错误“不能使用未定义的值作为 SCALAR 引用。”

模块文档说

# fetch full messages
my @msgs = $imap->get_rfc822_body([ @msg_ids ]);
print $$_ for (@msgs)

应包含对标量的引用。 @msg_id 应该是收件箱中电子邮件号码的数字数组,但也作为数组引用返回。

我不确定如何正确输出此数据以使其可读。这是模块引用:Net::IMAP::Client

这是我的代码片段:

use Net::IMAP::Client;
use Net::IMAP;
use Net::SMTP;
use strict;
use warnings;

my $imap = Net::IMAP::Client->new(
server => ,
user => , # i omitted this data for privacy
pass => ,
ssl => ,
port => ,
) or die "could not connect to IMAP server";

$imap->login or die('Login Failed: ' . $imap->last_error);

my $num_messages = $imap->select('[Gmail]/All Mail');

my @msg_id = $imap->search('ALL');
print @msg_id;
print "\n";

my @data = $imap->get_rfc822_body([@msg_id]);
print $$_ for (@data);

编辑:我使用了 Data::Dumper 并得到了一大块包含电子邮件和所有格式标签的测试。我也知道 $imap-search 应该返回一些东西,因为收件箱有 4 封电子邮件,其中 2 封未读。但是由于变量@data 保存着电子邮件,我无法找出在输出中取消引用它的正确方法

最佳答案

$imap->search('ALL') 返回一个数组引用,而不是一个数组。所以你需要改变

my @msg_id = $imap->search('ALL');

my @msg_id = @{$imap->search('ALL')};

最好在取消引用之前检查方法是否返回定义的值,以防失败。

关于perl - 不确定 Perl 数据类型引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11890075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com