LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1203|回复: 3

请教为什么我的脚本中替换操作不能进行??

[复制链接]
发表于 2004-3-4 13:38:26 | 显示全部楼层 |阅读模式
脚本如下,我的本意是获得本地IP,然后修改维护的一个网页中的IP.但是不能进行,请教:
#!/usr/bin/perl
my $ipconfig = `ifconfig`;
if ($ipconfig =~ /addr218\.72\.70\.\d+)/) {
$ip = $1;
}
open CHANGE,"zhuye.htm" or warn "Can't find such files! ($!)";
while (defined($_ = <CHANGE>)) {
s/218\.72\.70\.\d+/$ip/g or warn "Can't change the word! ($!)";
}
运行之后,出现这样的错误提示:
Can't change the word! (对设备不适当的 ioctl 操作) at ./shangwang line 8, <CHANGE> line 1.
Can't change the word! (对设备不适当的 ioctl 操作) at ./shangwang line 8, <CHANGE> line 2.
Can't change the word! (对设备不适当的 ioctl 操作) at ./shangwang line 8, <CHANGE> line 3.
请教,该如何修改以使替换得以通过呢??
 楼主| 发表于 2004-3-4 13:42:29 | 显示全部楼层
不好意思,怎么帖子里有: (就变成表情符号了??555555
上面有表情符号的那一行是

if ($ipconfig =~ /addr218\.72\.70\.\d+)/) {
发表于 2004-3-15 13:54:03 | 显示全部楼层
替换操作是不是应该s开头?
发表于 2004-3-16 20:23:30 | 显示全部楼层
open一个文件有只读,可写,可写分重新写入和在文件尾追加的方式。
只读的各式是这样:
open( FD,"file_name") ;
可写中的重新写入新的内容:
open(FD,">file_name");
从文件尾追加:
open(FD,">>file_name");

你的程序要求写入新的内容而没有把文件设为可写的标志,所以就I/O操作错误了。
这样:
open CHANGE,">zhuye.htm"

这是用> 的一个例子:

  1. #!/usr/bin/perl -w
  2. open(FH,"tempfile") or die "can not open tempfile";
  3. while ($_ = <FH>) {
  4. print "$_";
  5. }
  6. close(FH);
  7. print "\n";
  8. open( FH,">tempfile") or die "can not open tempfile" ;
  9. print FH "open successfull";
  10. close(FH);
  11. open(FH,"tempfile") or die "can not open tempfile" ;
  12. while($_ = <FH>) {
  13. print "$_";
  14. }
  15. close(FH);
  16. print "\ndone\n";
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表