免费注册 查看新帖 |

Chinaunix

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

linux环境,运行Perl脚本+命令行参数,如何实现文本的动态输出? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-26 17:03 |只看该作者 |倒序浏览
linux环境,运行Perl脚本+命令行参数,如何实现文本的动态输出?也就是说文本的输出内容由命令行参数决定;
详细描述如下:
linux环境,运行Perl脚本:  perl hello.pl wsss (wsss是带的参数)
现在要根据参数(wsss)来动态决定文本的输出;比如说原文本的内容为:
,9339,1197023655431,119702365772,S,1
我要得到这种效果怎么做?

wsss,9339,1197023655431,119702365772,S,1

论坛徽章:
0
2 [报告]
发表于 2007-12-26 21:55 |只看该作者

  1. use strict;
  2. use warnings;
  3. print shift @ARGV;
复制代码

论坛徽章:
0
3 [报告]
发表于 2007-12-27 09:45 |只看该作者

CODE

#!/usr/bin/perl -w
use strict;
use warnings;
my %tt;
my $key;
open(FILE1,"sessioninfo.log") or die "i can't find1!\n";
open(OUT2,">result.log")or die "i can't creat the file2!\n";

my $info;
while(<FILE1>) {
  $info = $_;
  chomp($info);
  my @one_line = split(/\s*\|\s*/,$info);

  $one_line[0] = $ARGV[0];
  if($one_line[4] eq 'DS-SERVER-0001'){
    $one_line[4] = 'S';
  }
  else{
    $one_line[4] = 'F';
  }
  my $text = join(',',@one_line);
  print $text."\n";
}
问题解决了,谢谢指点;
如果你运行:/user/bin/perl weekday.pl 2
传递过程是:PERL接收到你的参数“2”,并存入数组@ARGV(@ARGV是PERL默认用来接收参数的数组,可以有多个参数,$ARGV[0]是表示接收到的第一个参数,第二个当然是$ARGV[1]),如果你只是想输出第一个参数“2”的话,一句就够了:print $ARGV[0],不用那么罗嗦;然后你用$text = $ARGV[0]将这个接收到的参数存入了$text变量,等待处理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP