gpt4 book ai didi

perl - ./script 第 17 行没有这样的文件或目录

转载 作者:行者123 更新时间:2023-12-01 10:05:39 25 4
gpt4 key购买 nike

确切的错误:

$ ./script.pl file.txt  
Can't open file.txt: No such file or directory at ./script.pl line 17.
Use of uninitialized value in chomp at ./script.pl line 17.
Username: Password:

我正在编写一个脚本,它从命令行获取文件名,然后将其输出写入它:

#!/usr/bin/perl
use warnings;
use strict;
use Term::ReadKey;

my @array;
my $user;
my $pass;

# get login info
print "Username: ";
chomp($user = <>); # line 17
print "Password: ";
ReadMode 2;
chomp($pass = <>);
ReadMode 0;
print " \n";

# ...
# connect to database, and save the info in "@array"
# ...

# save the array to a file
if (defined($ARGV[0])) {
open (MYFILE, ">".$ARGV[0]) or die "Can't open ".$ARGV[0].": $!\n";
foreach (@array) {
print MYFILE $_."\n";
}
close (MYFILE);
# otherwise, print the names to the screen
} else {
foreach (@array) {
print $_."\n";
}
}

但是,如果我将 ARGV[0] 替换为 "file.txt" 或类似的东西,打印到文件就可以了。如果我不提供文件名,则脚本可以正常工作。我的预感是打印语句干扰了 iostream 缓冲区,但我不知道如何修复它。

最佳答案

这就是 Perl 中魔法钻石运算符的工作原理。如果您使用参数启动脚本,它会尝试从文件中读取输入。如果你给它一个标准输入,它就会从那里读取。

关于perl - ./script 第 17 行没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11016517/

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