Perl新手求助:如何从批处理文件向Perl数组传递参数?
从批处理向Perl数组传递参数的可行方案
嘿,作为Perl新手能想到用批处理传参数已经很棒啦!你的需求完全可行,而且操作起来其实挺简单的~
核心知识点:Perl的命令行参数数组@ARGV
首先要纠正一个小误区:你示例里用的@_是Perl中子程序(subroutine)用来接收参数的数组,而脚本顶层的命令行参数,我们要用@ARGV来获取——这就是你要找的“接收批处理传递参数的数组”。
你的批处理代码已经写对了:
@echo off C:\Perl64\bin\perl.exe D:\perl\prog.pl a 30 5 d o 78 g
后面跟着的a 30 5 d o 78 g这7个值,会自动被Perl脚本接收到@ARGV数组里,顺序完全对应。
正确的Perl脚本示例
把你的prog.pl改成这样就能实现需求了:
# 方式1:直接打印所有参数(默认用空格分隔) print "所有传递的参数:@ARGV\n\n"; # 方式2:像你计划的那样,把数组元素赋值给单个变量 my ($st, $st2, $com, $ep, $co, $vel, $sig) = @ARGV; # 逐个打印变量 print "第一个参数:$st\n"; print "第二个参数:$st2\n"; print "第三个参数:$com\n"; print "第四个参数:$ep\n"; print "第五个参数:$co\n"; print "第六个参数:$vel\n"; print "第七个参数:$sig\n";
运行效果
执行你的批处理文件后,控制台会输出:
所有传递的参数:a 30 5 d o 78 g 第一个参数:a 第二个参数:30 第三个参数:5 第四个参数:d 第五个参数:o 第六个参数:78 第七个参数:g
小提示
如果你的参数里包含空格(比如hello world),记得在批处理里给这个参数加上双引号,不然Perl会把它拆成两个参数:
@echo off C:\Perl64\bin\perl.exe D:\perl\prog.pl "hello world" 30 5
这时@ARGV的第一个元素就是完整的hello world啦~
内容的提问来源于stack exchange,提问作者Peri
相关产品推荐
相关产品推荐

