【发布时间】:2019-11-13 13:44:53
【问题描述】:
在 MacOS 10.13.6 High Sierra 上,我想将我以 eml 格式文件(使用 Thunderbird)导出的邮件列表转换为 HTML 文件。
为此,我安装了名为“mhonarc”的工具。
但在执行时,当我这样做时:
mhonarc -outdir /Users/peter/Mails_HTML /Users/peter/Mails
我收到以下错误:
Can't use 'defined(%hash)' (Maybe you should just omit the defined()?) at /opt/local/lib/perl5/vendor_perl/5.28/darwin-thread-multi-2level/mhamain.pl line 1565.
Compilation failed in require at /opt/local/bin/mhonarc line 39.
我不知道我是否有正确的 Perl 版本。我已经通过macports 和以下 3 个 macport 包安装了 perl5.26 和 perl5.28:
p5-mhonarc @2.6.19 (perl)
MHonArc - mail and news munging
p5.26-mhonarc @2.6.19 (perl)
MHonArc - mail and news munging
p5.28-mhonarc @2.6.19 (perl)
MHonArc - mail and news munging
完成后:sudo port searc mhonarc
我认为 High Sierra 的原生 Perl 和使用 macports 安装的 Perl 包之间存在冲突,但我不确定。
编辑 1
如果我做which perl,我得到:/opt/local/bin/perl,所以我推断我使用的是从macports 安装的版本。
这里是mhonarc 安装和可能使用的版本:
$ /opt/local/bin/perl --version
This is perl 5, version 26, subversion 3 (v5.26.3) built for darwin- thread-multi-2level
Copyright 1987-2018, Larry Wall
和
$ /usr/bin/perl --version
This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level
(with 2 registered patches, see perl -V for more detail)
Copyright 1987-2013, Larry Wall
编辑 2
我遵循了@choroba 的建议:我替换了所有 all defined(%variable_name) by just %variable_name
所以命令mhonarc -outdir /Users/peter/Mails_HTML /Users/peter/Mails 不会产生错误,但现在的问题是在/Users/peter/Mails_HTML 目录中不会产生任何HTML 格式的邮件
我得到以下输出:
This is MHonArc v2.6.19, Perl 5.028002 darwin
Converting messages to /Users/peter/Mails_HTML/
Reading /Users/peter/Mails
Writing mail
Writing /Users/peter/Mails_HTML//maillist.html ...
Writing /Users/peter/Mails_HTML//threads.html ...
Writing database ...
0 total messages
这种行为的根源是什么?
编辑 3
问题终于被修改后的命令行解决了:
mhonarc -outdir /Users/peter/Mails_HTML /Users/peter/Mails/*
在/Users/peter/Mails_HTMLdirectory 中生成所有 HTML 文件。只是缺少电子邮件的日期,我将进行研究以添加此信息。
【问题讨论】:
-
尝试将所有
defined(%variable_name)替换为%variable_name。 -
defined(%hash)自 5.22 ( perlmonks.org/?node_id=1225431 ) 以来是致命的,因此 5.18 可能有效。不幸的是,我没有 Mac,但您可以尝试export PATH=/usr/bin:$PATH看看发生了什么。如果这样做,还请尝试取消设置以PERL开头的所有环境变量。
标签: html perl file-conversion eml