我有一个包含以下行的文件
#comments abc
#comments xyz
SerialPort=100
Baudrate=9600
Parity=2
Databits=8
Stopbits=1
我也有数组 @in = ( SerialPort=500 , Baudrate=300, parity=0, Databits=16, Stopbits=0 ),这些数组元素从浏览器读取,我正在尝试编写 perl 脚本以匹配文件中的“SerialPort”并将文件中的 SerialPort=100 替换为数组的 SerialPort=500,我想匹配循环中的所有其他元素我试过的代码不起作用请改进下面的代码,我认为正则表达式不起作用,每次如果条件匹配和替换导致错误,并且当我在执行脚本文件后查看文件时,文件包含重复项。
#!/usr/bin/perl
$old_file = "/home/work/conf";
open (fd_old, "<", $old_file) || die "cant open file";
@read_file = <fd_old>;
close (fd_old);
@temp = ();
$flag = 0;
foreach $infile ( @read_file )
{
foreach $rr ( @in )
{
($key, $value ) = split(/=/, $rr );
if ( $infile =~ s/\b$key\b(.*)/$rr/ )
{
push ( @temp , $infile );
$flag = 0;
}
else
{
$flag = 1;
}
}
if ( $flag )
{
push (@temp, $infile );
}
}
open ( fd, ">", $old_file ) || die "can't open";
print fd @temp;
close(fd);