Perl Can';不要写入文件

Perl Can';不要写入文件,perl,file,Perl,File,为什么我不能将输出写入输入文件 它可以很好地打印,但不能写入文件 my $i; my $regex = $ARGV[0]; for (@ARGV[1 .. $#ARGV]){ open (my $fh, "<", "$_") or die ("Can't open the file[$_] "); $i++; foreach (<$fh>){ open (my $file, '>>', '/results.txt') or

为什么我不能将输出写入输入文件

它可以很好地打印,但不能写入文件

my $i;
my $regex = $ARGV[0];

for (@ARGV[1 .. $#ARGV]){
    open (my $fh, "<", "$_") or die ("Can't open the file[$_] ");
    $i++;
    foreach (<$fh>){
        open (my $file, '>>', '/results.txt') or die ("Can't open the file "); #input file
        for (<$file>){
            print "Given regexp: $regex\nfile$i:\n   line $.: $1\n" if $_ =~ /\b($regex)\b/;
        }
    }
}
我的$i;
my$regex=$ARGV[0];
对于(@ARGV[1..$#ARGV]){
打开(my$fh,“>”,“/results.txt”)或死亡(“无法打开文件”)#输入文件
对于(){
如果$\=~/\b($regex)\b/,则打印“给定regexp:$regex\n文件$i:\n行$:$1\n”;
}
}
}

不清楚您的问题是否已解决

我的最佳猜测是,您希望您的程序在以下参数中指定的文件中搜索作为第一个参数传递的正则表达式,并将结果附加到
results.txt

如果这是正确的,那么这就更接近你所需要的

use strict;
use warnings;
use autodie;

my $i;
my $regex = shift;

open my $out, '>>', 'results.txt';

for my $filename (@ARGV) {
  open my $fh, '<', $filename;
  ++$i;
  while (<$fh>) {
    next unless /\b($regex)\b/;
    print $out "Given regexp: $regex\n";
    print $out "file$i:\n";
    print $out "line $.: $1\n";
    last;
  }
}
使用严格;
使用警告;
使用自动模具;
我的$i;
我的$regex=班次;
打开我的$out,“>>”,“results.txt”;
对于我的$filename(@ARGV){

打开我的$fh,“不清楚您的问题是否已经解决

我的最佳猜测是,您希望您的程序在以下参数中指定的文件中搜索作为第一个参数传递的正则表达式,并将结果附加到
results.txt

如果这是正确的,那么这就更接近你所需要的

use strict;
use warnings;
use autodie;

my $i;
my $regex = shift;

open my $out, '>>', 'results.txt';

for my $filename (@ARGV) {
  open my $fh, '<', $filename;
  ++$i;
  while (<$fh>) {
    next unless /\b($regex)\b/;
    print $out "Given regexp: $regex\n";
    print $out "file$i:\n";
    print $out "line $.: $1\n";
    last;
  }
}
使用严格;
使用警告;
使用自动模具;
我的$i;
我的$regex=班次;
打开我的$out,“>>”,“results.txt”;
对于我的$filename(@ARGV){

打开my$fh,'Print语句应该是给定regexp的
Print$file"$reg…
。顺便问一下,你为什么要从
result.txt
文件中读取数据?你打开了
result.txt
文件进行写入。我遗漏了什么吗?@SanketParmar,不,你是对的。我搞砸了,只是编程还是太差了。你真的想打开
/results.txt
而不是,例如,
/results.txt
?我也是在上,我看不到任何写入该文件的尝试(尽管控制台上有一个
print
。@DavidK,我需要/results.txt,是的,我错过了print
/
附近的文件名是根目录。你有权限在那里创建文件吗?如果没有(我怀疑你没有),每次尝试打开一个新文件进行写入时都会失败。您可能更希望在当前工作目录中创建该文件,您可以将其命名为
/results.txt
。Print语句应为
Print$file“Given regexp”$reg…
。顺便问一下,你为什么要从
result.txt
文件中读取数据?你打开了
result.txt
文件进行写入。我遗漏了什么吗?@SanketParmar,不,你是对的。我搞砸了,只是编程还是太差了。你真的想打开
/results.txt
而不是,例如,
/results.txt
?我也是在上,我看不到任何写入该文件的尝试(尽管控制台上有一个
print
。@DavidK,我需要/results.txt,是的,我错过了print
/
附近的文件名是根目录。你有权限在那里创建文件吗?如果没有(我怀疑你没有),每次尝试打开一个新文件进行写入时都会失败。您更可能希望在当前工作目录中创建该文件,您可以将其命名为
/results.txt
。由于修复了大量的功能性和风格性错误,希望我能多次+1。实际上,每个字符和newl这段代码和最初发布的代码之间的差异是一个重要的教训。由于它修复了大量的功能和风格错误,我希望能够多次+1这段代码。实际上,这段代码和最初发布的代码之间的每一个字符和换行符都是一个重要的教训。