24小时热门版块排行榜    

查看: 1625  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 北科281学硕材料求调剂 +6 tcxiaoxx 2026-03-20 6/300 2026-03-22 20:23 by edmund7
[考研] 315分,诚求调剂,材料与化工085600 +3 13756423260 2026-03-22 3/150 2026-03-22 20:11 by edmund7
[考研] 284求调剂 +5 Zhao anqi 2026-03-22 5/250 2026-03-22 17:38 by barlinike
[考研] 求调剂院校信息 +6 CX 330 2026-03-21 6/300 2026-03-22 15:25 by 无懈可击111
[考研] 一志愿070300浙大化学358分,求调剂! +3 酥酥鱼.. 2026-03-21 3/150 2026-03-22 11:31 by 杨杨杨紫
[考研] 354求调剂 +7 Tyoumou 2026-03-18 10/500 2026-03-22 11:11 by 人来盛
[基金申请] 山东省面上项目限额评审 +4 石瑞0426 2026-03-19 4/200 2026-03-22 08:50 by Wei_ren
[考研] 280求调剂 +11 咕噜晓晓 2026-03-18 12/600 2026-03-21 22:40 by ACS Nano——
[考研] 材料工程专硕 348分求调剂 +3 冬辞. 2026-03-17 5/250 2026-03-21 18:47 by 学员8dgXkO
[考研] 一志愿深大,0703化学,总分302,求调剂 +4 七月-七七 2026-03-21 4/200 2026-03-21 18:20 by 学员8dgXkO
[考研] 求助 +5 梦里的无言 2026-03-21 6/300 2026-03-21 17:51 by 学员8dgXkO
[考研] 307求调剂 +3 余意卿 2026-03-18 3/150 2026-03-21 17:31 by ColorlessPI
[考研] 279求调剂 +5 红衣隐官 2026-03-21 5/250 2026-03-21 14:59 by lature00
[考研] 304求调剂 +6 曼殊2266 2026-03-18 6/300 2026-03-21 00:32 by JourneyLucky
[考研] 295求调剂 +4 一志愿京区211 2026-03-18 6/300 2026-03-20 23:41 by JourneyLucky
[考研] 0817 化学工程 299分求调剂 有科研经历 有二区文章 +22 rare12345 2026-03-18 22/1100 2026-03-20 20:39 by zhukairuo
[考研] 085410人工智能专硕317求调剂(0854都可以) +4 xbxudjdn 2026-03-18 4/200 2026-03-20 09:07 by 不168
[考研] 材料学硕318求调剂 +5 February_Feb 2026-03-19 5/250 2026-03-19 23:51 by 23Postgrad
[考研] 0703化学调剂 +4 18889395102 2026-03-18 4/200 2026-03-19 16:13 by 30660438
[考研] 301求调剂 +4 A_JiXing 2026-03-16 4/200 2026-03-17 17:32 by ruiyingmiao
信息提示
请填处理意见