我对如何阅读文本文件的内容感到困惑。我能够读取文件名但无法弄清楚如何获取内容。顺便说一下文件是加密的,这就是我试图解密的原因。
#!/Strawberry/perl/bin/perl
use v5.14;
sub encode_decode {
shift =~ tr/A-Za-z/Z-ZA-Yz-za-y/r;
}
my ($file1) = @ARGV;
open my $fh1, '<', $file1;
while (<$fh1>) {
my $enc = encode_decode($file1);
print my $dec = encode_decode($enc);
# ... do something with $_ from $file1 ...
}
close $fh1;
答案 0 :(得分:1)
这一行
my $enc = encode_decode($file1)
将文件的名称传递给encode_decode
像while ( <$fh1> ) { ... }
这样的循环将文件中的每一行放入默认变量$_
。您已在评论“从$_
... 中使用$file1
做了一些事情。你可能想要
my $enc = encode_decode($_)
顺便说一下,你的encode_decode
子程序不会反转它自己的编码。您已经编写了实际上是ROT25编码的内容,因此您必须应用encode_decode
26次才能返回到原始字符串
值得注意的是你的shebang线
#!/Strawberry/perl/bin/perl
在Windows上没有意义,因为命令shell不处理shebang行。 Perl本身会检查行,以查找-w
或-i
等选项,但不管怎样你都不应该使用它们。只需省略该行,或者如果您希望能够在Linux和Windows上运行程序,请使用
#!/bin/env perl
这会导致Linux shell在PATH变量中搜索第一个perl
可执行文件