我该如何使用Perl转换Base64编码的文件?

4

有哪些方法可以使用Perl翻译base64编码的文件?

我想查看和编辑该文件。

$ file base64result 
base64result:   XML document

$ls -l base64result 
-rw-r--r--   1 dpadmin  appadmin     52K Oct 28 12:57 base64result

这是我尝试过的,但没有成功的方法:

#!/bin/perl

###################################################
# decode_base64.pl:
###################################################

use strict;
use MIME::Base64 qw( decode_base64 );

open INFILE,  '<', $ARGV[0];
open OUTFILE, '>', $ARGV[1];
binmode OUTFILE;
my $buf;
while ( $buf = <INFILE> ) {
    print OUTFILE decode_base64($buf);
}

close OUTFILE;
close INFILE;

输出:

$cat base64output
Æioz»"¢z{Äž÷¥¢—±šYìz{

你能详细说明一下如何转换文件吗? - octopusgrabbus
我想从base64解码它。base64格式是无法阅读的。我想能够阅读和编辑它等等。不确定我表达清楚了吗?我表达清楚了吗? - letakeda
你到目前为止调查了什么?你应该将它添加到原始帖子中,而不是作为评论。你想将此文件转换为ASCII内容吗?你想要DOS还是Unix文件格式(比从base 64转换重要,但仍然可能是一个问题)。你可以从这里开始:http://www.caveofprogramming.com/articles/perl/perl-base64/ 我使用“perl base64解码”进行了搜索,并得到了相当多的结果。 - octopusgrabbus
你说得对,我需要提供更多的细节。请看我更新的内容并检查现在是否更好。谢谢! - letakeda
我希望Perl专家能够回答这个问题。我不太确定发生了什么事。 - octopusgrabbus
Base64是一种将数据(包括二进制数据)编码为可靠通过电子邮件或类似方式发送的字符的方法。Base64编码字符串通常使用简单的打印字符。大写字母(A-Z)和小写字母(a-z)加上数字(0-9)共有62个字符。另外两个字符(通常是“+”和“/”)补全了64个字符。您的命令生成的输出可能是正确的,但如果用于除打印(作为文本)语句之外的其他内容,则可能更有意义。 - AdrianHHH
1个回答

6
您的代码是正确的(虽然我在下面进行了改进),而您没有收到任何错误的事实意味着该文件是有效的base64。您获得了可以获得的内容。
$ cat decode_base64.pl
#!/usr/bin/perl

use strict;
use warnings;

use MIME::Base64 qw( decode_base64 );

binmode STDOUT;
while ( my $buf = <> ) {
    print decode_base64($buf);
}

$ echo 'Hello, World!' | base64
SGVsbG8sIFdvcmxkIQo=

$ echo 'Hello, World!' | base64 | decode_base64.pl
Hello, World!

如果您期望得到不同的结果,那么您的期望是错误的。如果您想获得不同的结果,您需要更改您提供的数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接