免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2231 | 回复: 7
打印 上一主题 下一主题

这段代码哪里有问题?请大家帮助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-21 21:11 |只看该作者 |倒序浏览
#
#read the method
#
  open(INP,"<mccm.inp")|| die "can't open $!";
  @line =(<INP>);
  close INP;
  @info = ($line[0] =~ /\S+/g);
  $info[0]=~tr/A-Z/a-z/;
  $coef=$info[0]."_coef";
  $method=$info[0]."_method";
  $methoden=$info[0]."_en";
  $info[0]=~tr/a-z/A-Z/;
  $methodp=$info[0];

  $infilename=$ARGV[0];
  $outfilename=$ARGV[1];

  open(FILE1,"<$infilename")|| die "can't open $!";
#

上面部分在perl的版本为5.8.0时可以执行,但是在5.8.5时就出错,提示为open(FILE1,"<$infilename")|| die "can't open $!";这行的问题,找不到文件。
程序是如下提交的,input是输入文件,output是输出文件。
program input output

是否是不同的perl版本的语法问题,怀疑是$ARGV这部分不对,请大家指教。

论坛徽章:
0
2 [报告]
发表于 2008-10-21 21:30 |只看该作者
把"<$infilename"的“<”去掉试试呢

论坛徽章:
0
3 [报告]
发表于 2008-10-21 22:01 |只看该作者
去掉也没用。
低版本的perl可以和高版本的共存么?如何设置?

论坛徽章:
0
4 [报告]
发表于 2008-10-21 22:11 |只看该作者
可以共存,在/usr/bin/perl给不同的符号连接 应该就可以切换

论坛徽章:
0
5 [报告]
发表于 2008-10-21 22:48 |只看该作者
换成这样试试看:
open INP, "<", $infilename or die "can't open $!";

这是一个微妙的陷阱,现代 perl 提倡用“three-argument”的 open。

论坛徽章:
0
6 [报告]
发表于 2008-10-22 08:25 |只看该作者
楼上说的有道理

论坛徽章:
0
7 [报告]
发表于 2008-10-22 09:32 |只看该作者
原帖由 happytown277 于 2008-10-21 22:48 发表
换成这样试试看:
open INP, "


还是不行,出错信息一样。我直接把输入文件名写到这个位置就没问题了,还是语法的问题,哪位能再给个建议?找不到低版本的perl安装文件。可以从别的机器拷贝过了用吗,拷过来perl和libperl.so但是还说缺东西,没办法了。

论坛徽章:
0
8 [报告]
发表于 2008-10-22 09:47 |只看该作者
你用print $ARGV[0];看一下输出的是什么值。
我用5.10的版本试了没有问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP