24小时热门版块排行榜    

查看: 1598  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 0854复试调剂 276 +4 wmm9 2026-03-01 5/250 2026-03-02 06:41 by 汪!?!
[考研] 材料化工调剂 +12 今夏不夏 2026-03-01 13/650 2026-03-01 23:32 by L135790
[考研] 265分求调剂不调专业和学校有行学上就 +6 礼堂丁真258 2026-02-28 8/400 2026-03-01 22:50 by jian_
[基金申请] 成果系统访问量大,请一小时后再尝试。---NSFC啥时候好哦,已经两天这样了 +4 NSFC2026我来了 2026-02-28 4/200 2026-03-01 22:37 by 铁门栓
[硕博家园] 博士自荐 +7 科研狗111 2026-02-26 11/550 2026-03-01 22:24 by 哲平L
[考研] 26考研报考西工大材料308分求调剂 +3 weizhong123 2026-03-01 3/150 2026-03-01 21:42 by 公瑾逍遥
[考研] 272求调剂 +6 材紫有化 2026-02-28 6/300 2026-03-01 18:58 by 18137688336
[考研] 328求调剂 +3 aaadim 2026-03-01 5/250 2026-03-01 17:29 by njzyff
[考研] 313求调剂 +3 水流年lc 2026-02-28 3/150 2026-03-01 16:01 by 新能源达人
[考研] 307求调剂 +5 wyyyqx 2026-03-01 5/250 2026-03-01 15:21 by Fff-1
[考研] 304求调剂 +6 曼殊2266 2026-02-28 7/350 2026-03-01 15:14 by wjLi2017
[考研] 303求调剂 +4 今夏不夏 2026-03-01 4/200 2026-03-01 14:46 by 嘟嘟小浣熊
[考研] 求调剂 +6 repeatt?t 2026-02-28 6/300 2026-03-01 14:37 by Sakura绘
[硕博家园] 2025届双非化工硕士毕业,申博 +3 更多的是 2026-02-27 4/200 2026-03-01 10:04 by ztg729
[论文投稿] 求助coordination chemistry reviews 的写作模板 10+3 ljplijiapeng 2026-02-27 4/200 2026-03-01 09:07 by babero
[论文投稿] Optics letters投稿被拒求助 30+3 luckyry 2026-02-26 4/200 2026-03-01 09:06 by babero
[考研] 085600材料工程一志愿中科大总分312求调剂 +8 吃宵夜1 2026-02-28 10/500 2026-02-28 20:27 by L135790
[考研] 276求调剂 +3 路lyh123 2026-02-28 4/200 2026-02-28 19:45 by 路lyh123
[高分子] 求环氧树脂研发1名 +3 孙xc 2026-02-25 11/550 2026-02-28 16:57 by ichall
[硕博家园] 【博士招生】太原理工大学2026化工博士 +4 N1ce_try 2026-02-24 8/400 2026-02-26 08:40 by N1ce_try
信息提示
请填处理意见