24小时热门版块排行榜    

查看: 1621  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

li_clifff

银虫 (正式写手)

[求助] 请教Windows系统下perl脚本的ARGV应用问题,谢谢

在Windows Xp,Perl脚本文件make_FENE.pl如下:

#! C:\strawberry\perl\bin\perl.exe

sub PAR {
open(P,"> _parameter" );
print P< \&LIST
BD        = .$BD.
BDzeta    = $BDzeta
MDblocks  = $blocks
MDsteps   = $steps
T         = $T
dt        = $dt
FENECdist = $FENECdist
shearrate = $shearrate
/
EOF
};

$OK=0;
$BDzeta = "0.0";
$shearrate = "0.0";
foreach $i (0 .. $#ARGV) {
($quant,$value) = split(/=/,$ARGV[$i]);
if ($quant eq "BD" )                 { $BD=$value; $OK=$OK+1; };
if ($quant eq "blocks" )         { $blocks=$value; $OK=$OK+1; };
if ($quant eq "steps" )         { $steps=$value; $OK=$OK+1; };
if ($quant eq "T" )              { $T=$value; $OK=$OK+1; };
if ($quant eq "dt" )             { $dt=$value; $OK=$OK+1; };
if ($quant eq "FENECdist" )         { $FENECdist=$value; $OK=$OK+1; };
if ($quant eq "BDzeta" )         { $BDzeta=$value; $OK=$OK+1; };        
if ($quant eq "shearrate" )     { $shearrate=$value; };

if ($quant eq "Np" )                  { $Np=$value; };
if ($quant eq "boxx" )                 { $boxx=$value; };
if ($quant eq "boxy" )          { $boxy=$value; };
if ($quant eq "boxz" )          { $boxz=$value; };       
};

PAR;
在CMD窗口的当前目录下直接 perl make_FENE.pl, 生成_parameter文件:
&LIST
BD        = ..
BDzeta    = 0.0
MDblocks  =
MDsteps   =
T         =
dt        =
FENECdist =
shearrate = 0.0
/
但是我希望怎样在窗口能够出现命令行如
BD =   
然后我在键盘上敲入这个值,依次类推,最后生成的_parameter里的数值是由我键盘输入的。上述的脚本应该怎么改进,请大家帮帮忙,非常感谢!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zideiwuying

金虫 (初入文坛)


xzhdty(金币+1): 欢迎讨论交流 2012-02-07 23:40:01
不知道上面代码中怎么加入了表情
if(chomp($num= < 0){
        print "read from stdin error\n";
}else{
        print "num=[$num]\n";
}
3楼2012-02-07 15:13:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

zideiwuying

金虫 (初入文坛)

【答案】应助回帖


感谢参与,应助指数 +1
xzhdty(金币+1): 欢迎讨论交流 2012-02-07 23:39:42
楼主你好,如果我没有理解错的话你的意思是想接收键盘的输入,并将该值赋给变量,变量接收键盘输入可以使用“$变量名=”的方式实现,此时的变量需要使用chomp函数进行处理,下面是测试代码:
if(chomp($num=<0){
        print "read from stdin error\n";
}else{
        print "num=[$num]\n";
}
chomp函数的功能请楼主自己百度,下面的代码可以测试chomp的作用:
$test=;
print "[$test]\n";
chomp($test);
print "[$test]\n";
2楼2012-02-07 15:12:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

li_clifff

银虫 (正式写手)


jjdg(金币+1): 欢迎讨论 2012-02-08 23:32:56
引用回帖:
3楼: Originally posted by zideiwuying at 2012-02-07 15:13:31:
不知道上面代码中怎么加入了表情
if(chomp($num=<STDIN> < 0){
        print "read from stdin error\n";
}else{
        print "num=[$num]\n";
}

谢谢,问题解决了,我用这样的:

perl make_FENE.pl  BD=false blocks=10  steps=500 T=1.0 dt=0.005 FENECdist=1.20 shearrate=0

就可以了,剩下一个小问题是
sub PAR {
open(P,"> _parameter" );
print P< \&LIST
BD        = .$BD.
BDzeta    = $BDzeta
MDblocks  = $blocks
MDsteps   = $steps
T         = $T
dt        = $dt
FENECdist = $FENECdist
shearrate = $shearrate
/
EOF
};
如果我要生成的_parameter文件放在某个确定的目录下,比如 D:\perl\document, 该怎么改呢?
4楼2012-02-07 18:18:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

li_clifff

银虫 (正式写手)


jjdg(金币+1): 感谢参与 2012-02-08 23:32:40
引用回帖:
2楼: Originally posted by zideiwuying at 2012-02-07 15:12:21:
楼主你好,如果我没有理解错的话你的意思是想接收键盘的输入,并将该值赋给变量,变量接收键盘输入可以使用“$变量名=<STDIN>”的方式实现,此时的变量需要使用chomp函数进行处理,下面是测试代码:
if(ch ...

可能不大一样,不过您说的这种我也很感兴趣的,我会试试看,谢谢
5楼2012-02-07 18:27:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 260求调剂 +3 朱芷琳 2026-03-20 4/200 2026-03-22 15:12 by 朱芷琳
[考研] 一志愿070300浙大化学358分,求调剂! +3 酥酥鱼.. 2026-03-21 3/150 2026-03-22 11:31 by 杨杨杨紫
[考研] 277材料科学与工程080500求调剂 +6 自由煎饼果子 2026-03-16 6/300 2026-03-21 17:21 by 学员8dgXkO
[考研] 求调剂 +3 白QF 2026-03-21 3/150 2026-03-21 13:12 by zhukairuo
[考研] 一志愿武理材料305分求调剂 +6 想上岸的鲤鱼 2026-03-18 7/350 2026-03-21 01:03 by JourneyLucky
[考研] 311求调剂 +5 冬十三 2026-03-18 5/250 2026-03-21 00:16 by JourneyLucky
[考研] 304求调剂 +7 司空. 2026-03-18 7/350 2026-03-20 23:08 by JourneyLucky
[考研] 一志愿苏州大学材料求调剂,总分315(英一) +5 sbdksD 2026-03-19 5/250 2026-03-20 22:10 by luoyongfeng
[考研] 350求调剂 +5 weudhdk 2026-03-19 5/250 2026-03-20 22:04 by luoyongfeng
[考研] 一志愿中南化学(0703)总分337求调剂 +8 niko- 2026-03-19 9/450 2026-03-20 21:57 by luoyongfeng
[考研] 一志愿吉林大学材料学硕321求调剂 +11 Ymlll 2026-03-18 15/750 2026-03-20 19:40 by 丁丁*
[考研] 261求B区调剂,科研经历丰富 +3 牛奶很忙 2026-03-20 4/200 2026-03-20 19:34 by JourneyLucky
[考研] 环境工程调剂 +9 大可digkids 2026-03-16 9/450 2026-03-20 17:38 by 醉在风里
[考研] 广西大学家禽遗传育种课题组2026年硕士招生(接收计算机专业调剂) +3 123阿标 2026-03-17 3/150 2026-03-20 15:58 by 飞行琦
[考研] 招收调剂硕士 +4 lidianxing 2026-03-19 12/600 2026-03-20 12:25 by lidianxing
[考研] 生物学调剂招人!!! +3 山海天岚 2026-03-17 4/200 2026-03-19 21:34 by 怎么释怀
[考研] 085600材料与化工求调剂 +6 绪幸与子 2026-03-17 6/300 2026-03-19 13:27 by houyaoxu
[考研] 301求调剂 +4 A_JiXing 2026-03-16 4/200 2026-03-17 17:32 by ruiyingmiao
[考研] 302求调剂 +4 小贾同学123 2026-03-15 8/400 2026-03-17 10:33 by 小贾同学123
[考研] [导师推荐]西南科技大学国防/材料导师推荐 +3 尖角小荷 2026-03-16 6/300 2026-03-16 23:21 by 尖角小荷
信息提示
请填处理意见