gpt4 book ai didi

perl - 如何在 Perl 中读取文件,如果它不存在则创建它?

转载 作者:行者123 更新时间:2023-12-04 13:50:00 25 4
gpt4 key购买 nike

在 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";

最佳答案

使用正确的 test file operator :

use strict;
use warnings;
use autodie;

my $filename = 'inputs.txt';
unless(-e $filename) {
#Create the file if it doesn't exist
open my $fc, ">", $filename;
close $fc;
}

# Work with the file
open my $fh, "<", $filename;
while( my $line = <$fh> ) {
#...
}
close $fh;

但是如果文件是新的(没有内容),while 循环将不会被处理。只有在测试正常时才更容易读取文件:
if(-e $filename) {
# Work with the file
open my $fh, "<", $filename;
while( my $line = <$fh> ) {
#...
}
close $fh;
}

关于perl - 如何在 Perl 中读取文件,如果它不存在则创建它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25861414/

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