在Perl中,我知道这个方法:
open( my $in, "<", "inputs.txt" );
字符串
读取文件,但仅当文件存在时才这样做。
用另一种方式,用+:
open( my $in, "+>", "inputs.txt" );
型
写一个文件/截断,如果它存在,所以我没有机会读取文件并将其存储在程序中。
如果文件存在或不存在,我如何在Perl中读取文件?
好吧,我已经编辑了我的代码,但文件仍然没有被读取。问题是它没有进入循环。我的代码有问题吗?
open( my $in, "+>>", "inputs.txt" ) or die "Can't open inputs.txt : $!\n";
while (<$in>) {
print "Here!";
my @subjects = ();
my %information = ();
$information{"name"} = $_;
$information{"studNum"} = <$in>;
$information{"cNum"} = <$in>;
$information{"emailAdd"} = <$in>;
$information{"gwa"} = <$in>;
$information{"subjNum"} = <$in>;
for ( $i = 0; $i < $information{"subjNum"}; $i++ ) {
my %subject = ();
$subject{"courseNum"} = <$in>;
$subject{"courseUnt"} = <$in>;
$subject{"courseGrd"} = <$in>;
push @subjects, \%subject;
}
$information{"subj"} = \@subjects;
push @students, \%information;
}
print "FILE LOADED.\n";
close $in or die "Can't close inputs.txt : $!\n";
型
4条答案
按热度按时间j8yoct9x1#
使用正确的test file operator:
字符串
但是如果文件是新的(没有内容),while循环将不会被处理。只有在测试正常的情况下才更容易读取文件:
型
szqfcxe22#
你可以使用
+>>
进行读取/追加,如果文件不存在,则创建文件,但不截断它:字符串
f5emj3cl3#
首先检查文件是否存在。查看下面的示例代码:
字符串
jucafojl4#
acceptet answer中提出的解决方案可以使用来自https://www.cpan.org的
File::Touch
库,以更少(更好的可读性)的代码编写字符串