我正在尝试创建一个执行这五件事的简单程序
我已经在我提供的代码上标注了案例。每次我运行这个,我都不会得到错误,但回复的反应相同。我正在尝试这样来提高我的文件扫描技能。如果有人对这个话题有任何了解,我将不胜感激。提前致谢。
#!/usr/bin/perl
use strict;
use warnings;
print ("Enter a file name: ");
my $infile = <STDIN>; #Prompts the user for input
chomp ($infile); #Chomps the $infile Variable.
#****CASE ONE****
if (-e $infile) {
print ("File '$infile' does not exist.\n");
exit;
}
#****CASE TWO****
elsif (-f $infile) {
print ("Not a regular file or directory.\n");
exit;
}
#****CASE THREE****
open ( my $input, '<', $infile ) or die $!;
print ("Can not open input file '$infile': Permission denied. ");
#****CASE FOUR****
#for (my $inf = 1; ; ++$_)
my $inf = 9**9**9;
if (-e $infile =~ /^[a-zA-Z]+$/) {
} else {
print ("File '$infile' containts invalid data.\n");
exit;
}
#****Case Five****
my $Int_Pos = 0;
my $Int_Neg = 0;
my $Int_Dec = 0;
open(FHIN, '<', $infile); #Opens the file prompted by user.
my @lines = <FHIN>; #Variable storing the number of lines in the file.
chomp( @lines );
close(FHIN); #File handle is closed.
while (my $line = <$input> ) { #iterates the file line by line, making $_ as teh defaule variable.
$Int_Pos++ if $line >= 0;
$Int_Neg++ if $line >= 0;
$Int_Dec++ if $line >= 0;
my $sum = $Int_Pos + $Int_Neg + $Int_Dec;
my $Observations = @lines;
my $Mean = $sum/3;
print ("Sum: '$sum'\n");
print ("Observations: '$Observations'\n");
print ("Mean: '$Mean'\n");
}
答案 0 :(得分:0)
if (-e $infile)
应该是
`if (not -e $infile) `
elsif (-f $infile)
与测试您想要的elsif (not -f $infile)
此外,当文件打开时会发生此打印:`
open ( my $input, '<', $infile ) or die $!;
print ("Can not open input file '$infile': Permission denied. ");`
而是将其更改为:
`open ( my $input, '<', $infile ) or die("Can not open input file '$infile': $!");`
这一行是荒谬的if (-e $infile =~ /^[a-zA-Z]+$/)
我在第4种情况下猜测你会想要一些东西
foreach $line (<$infile >){
$matches = () = $line =~ /^(\d+)$/;
if($matches != 1){
die "line does not contain a single number";
}
$sum += $1;
}
这是一个仓促,近似的代码,不使用严格(你应该使用严格!),这应该可以帮助你找出其余的
答案 1 :(得分:-1)
您使用$ infile作为输入
#****CASE THREE****
open ( my $input, '<', $infile ) or die $!;
我会做这样的事......
open ( my $input, '<', "somefile.txt" ) or die $!;