gpt4 book ai didi

perl - 使用 Perl 打开文件并预览其内容

转载 作者:行者123 更新时间:2023-12-02 08:27:06 25 4
gpt4 key购买 nike

我正在为学校做一个项目,这门课非常没有描述性。我不明白发生了什么以及为什么我无法显示文件。

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

print "\n+--------------------------+";
print "\n| The File Search & |";
print "\n| Display Tool |";
print "\n+--------------------------+";

print "\nPlease enter the file you would like to read (with full path): \n";

my $FILE = <STDIN>;
chomp $FILE;
sleep 1;

open (FILE, "$FILE");
print " Here is the secret information you seek supreme leader: \n";
print "==============================================================";

while ($FILE) {
chomp $FILE;
open $FILE;
}

我不完全确定我做错了什么。我尝试了各种不同的组合,但它只会导致错误。


更新

所以我根据大家的建议对代码做了一些修改(见下文)。运行脚本后返回以下错误

readline() on unopened filehandle at test.pl line 30.

在我下面的代码中,我想我打开了文件句柄,但这个错误让我觉得我在打开命令附近的某个地方弄乱了它。

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

print "\n+--------------------------+";
print "\n| The File Search & |"; #Not so fancy banner!
print "\n| Display Tool |";
print "\n+--------------------------+";

print "\n Welcome to the Tool. It is still being tested!!\n";
print "\n Please enter the file you would like to read: ";

my $filename = <STDIN>; #define the variable for the filename

if ( not -f $filename ) #This checks the validity of the file
{
print "Filename does not exist\n";
exit;
}

sleep 1;

print " Here is the secret information you seek supreme leader: \n";
print "==============================================================\n";

open my $filehandle, "<", $filename; #or die $!

while ( <$filename> ) { #While loop to read each line of the file
chomp;
print "$_\n";
}

我注释掉了打开字符串的 or die 部分,因为它只是杀死了脚本,我想看看哪里出了问题。我对 open 语句中的“<”有点困惑。 @鲍罗丁

最佳答案

您只是混淆了变量。您正在使用 $FILEFILE ,和(无形地)$_ . $FILE以文件的名称 开始,但您也从中读取,chomp它和open这是错误的

你应该open文件名、读取 文件句柄和 print您已阅读的内容(或任何其他值)。并且最好对所有局部变量使用小写,并为全局变量保留大写

您的代码应如下所示。我使用了 lexical 文件句柄 $fh而不是老式的全局性。将变量放在引号中,例如 "$FILE"是错误的:充其量它没有什么区别,但它可能会破坏你的程序。另外,<$fh>while像这样的循环读入默认变量 $_ ,这也是 chomp 的默认参数.把它想象成英语中的代词 it

open my $fh, '<', $file_name;
while ( <$fh> ) {
chomp;
print "$_\n";
}

关于perl - 使用 Perl 打开文件并预览其内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211946/

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