如何最好地传递参数到Perl一行?

前端之家收集整理的这篇文章主要介绍了如何最好地传递参数到Perl一行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个文件,一些文件,像这样:
$cat someFile
hdisk1 active
hdisk2 active

我使用这个shell脚本来检查:

$cat a.sh
#!/usr/bin/ksh
for d in 1 2
do
    grep -q "hdisk$d" someFile && echo "$d : ok"
done

我试图把它转换成Perl:

$cat b.sh
#!/usr/bin/ksh
export d
for d in 1 2
do
    cat someFile | perl -lane 'BEGIN{$d=$ENV{'d'};} print "$d: OK" if /hdisk$d\s+/'
done

我导出shell脚本中的变量d,并在Perl中使用%ENV获取值。有没有更好的方法将这个值传递给Perl一线?

解决方法

您可以使用“s”开关启用基本命令行参数。为破折号开始的每个参数定义一个变量。 – 告诉您的命令行参数的起始位置。
for d in 1 2 ; do 
  cat someFile | perl -slane ' print "$someParameter: OK" if /hdisk$someParameter\s+/' -- -someParameter=$d; 
done

见:perlrun

猜你在找的Perl相关文章