24小时热门版块排行榜    

查看: 1624  |  回复: 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

金虫 (初入文坛)

【答案】应助回帖


感谢参与,应助指数 +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的回帖

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的回帖

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的回帖

zideiwuying

金虫 (初入文坛)

【答案】应助回帖


jjdg(金币+1): 感谢参与 2012-02-08 23:32:31
引用回帖:
4楼: Originally posted by li_clifff at 2012-02-07 18:18:49:
谢谢,问题解决了,我用这样的:

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& ...

这个可以在open的时候就写你想要存放的目录,\需要进行转义,应该如下:
open(P,">D:\\perl\\document_parameter" );或者open(P,">D:/perl/document_parameter" );
你可以试一下
6楼2012-02-07 19:28:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 li_clifff 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 293求调剂 +3 涛涛Wjt 2026-03-22 5/250 2026-03-22 22:21 by jiangpengfei
[考研] 263求调剂 +4 yqdszhdap- 2026-03-22 4/200 2026-03-22 21:20 by 1144970272
[考研] 319求调剂 +4 小力气珂珂 2026-03-20 4/200 2026-03-22 15:53 by ColorlessPI
[考研] 一志愿北京化工大学070300 学硕336求调剂 +5 vv迷 2026-03-21 8/400 2026-03-22 14:20 by ColorlessPI
[考研] 资源与环境 调剂申请(333分) +5 holy J 2026-03-21 5/250 2026-03-21 22:42 by Catalysis25
[考研] 【考研调剂】化学专业 281分,一志愿四川大学,诚心求调剂 +11 吃吃吃才有意义 2026-03-19 11/550 2026-03-21 18:23 by 学员8dgXkO
[基金申请] 学校已经提交到NSFC,还能修改吗? 40+4 babangida 2026-03-19 9/450 2026-03-21 16:12 by babangida
[考研] 307求调剂 +3 wyyyqx 2026-03-17 3/150 2026-03-21 03:20 by JourneyLucky
[考研] 303求调剂 +5 睿08 2026-03-17 7/350 2026-03-21 03:11 by JourneyLucky
[考研] 22408 344分 求调剂 一志愿 华电计算机技术 +4 solanXXX 2026-03-20 4/200 2026-03-20 23:49 by alg094825
[考研] 求调剂 +3 @taotao 2026-03-20 3/150 2026-03-20 19:35 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
[考博] 申博26年 +3 八6八68 2026-03-19 3/150 2026-03-19 19:43 by nxgogo
[考研] 材料专硕306英一数二 +10 z1z2z3879 2026-03-16 13/650 2026-03-18 14:20 by 007_lilei
[考博] 26博士申请 +3 1042136743 2026-03-17 3/150 2026-03-17 23:30 by 轻松不少随
[考研] 085601求调剂 +4 Du.11 2026-03-16 4/200 2026-03-17 17:08 by ruiyingmiao
[考研] 283求调剂 +3 听风就是雨; 2026-03-16 3/150 2026-03-17 07:41 by 热情沙漠
[考研] 11408 一志愿西电,277分求调剂 +3 zhouzhen654 2026-03-16 3/150 2026-03-17 07:03 by laoshidan
信息提示
请填处理意见