【发布时间】:2017-11-24 06:32:18
【问题描述】:
从下面的代码中,我想存储正则表达式结果变量的内容(即 $fh 结果到新文件名中)。我该怎么做?
是否有任何可能的方法可以将正则表达式变量输出(即$fh 输出)写入新文件?
这是我的代码:
use strict;
use warnings;
open my $fh,'<',"open.txt" or die "$!";
while(<$fh>)
{
$fh=s/("\d+|\d+|")\s*/$1/g;
print $fh;
}
close $fh;
错误:
readline() on unopened filehandle 1 at fr.pl line 7.
close() on unopened filehandle 1 at fr.pl line 9.
打开.txt
1
2
3
radio
vendor
version114
version115
输出:
注意: $fh 具有正则表达式值。现在这些 $fh 值应该存储在新文件中并打印如下相同的内容。
radio
vendor
version
version
【问题讨论】:
-
请edit您的问题并包括示例输入和输出。你想让我做什么?你的正则表达式很奇怪。您正在捕获
"\d+或\d+或"(一个双引号)。然后是可选的空白,您将所有这些替换为捕获。您希望$word成为更改后的行,还是捕获组内的内容? -
请edit your question 修复明显的语法错误(语法突出显示非常清楚!)当您在那里时,您也可以考虑修复缩进。如果您希望大量陌生人阅读和理解您的代码,您可以通过使其尽可能易于理解来帮助他们。
-
添加了我的输入和输出部分以及错误@DaveCross
-
你问的问题和上次差不多,问题也一样——你不能像那样“覆盖”一个文件句柄。
-
想象一下你有一个装满玩具的盒子。您要做的是一次更换一个玩具。你正在做的是拿第一个玩具,把它换成一些新玩具,然后扔掉整个盒子,只保留新玩具。
标签: perl