如何读取文件的内容

时间:2016-03-13 17:50:29

标签: perl

我对如何阅读文本文件的内容感到困惑。我能够读取文件名但无法弄清楚如何获取内容。顺便说一下文件是加密的,这就是我试图解密的原因。

#!/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;

1 个答案:

答案 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可执行文件