根据网易云课程整理,禁转
子程序sub编写
- 子程序声明sub
- 子程序可以传入数组/哈希
- 默认变量@_ 用于传递参数
- 子程序调用&
- 变量的作用域:子程序中定义的变量作用域只能在子程序中调用,子程序可以调用全局变量
- 返回值return
#子程序示例
sub hello{
my($name) = @_;
#传入的是一个数组 @_,列表上下文将数组第一个元素赋值给$name
print "Hello $name !\n";
}
&hello("Tom","Lucy");
sub hello1{
print "Hello $_[0] !\n";
#从数组@_中获取第一个元素,效果同上(不是$_老地方)
}
&hello1("Tom","Lucy");
#数组求和
sub sumNum{
my@num=@_;
my $sum = 0;
for my$n(@num){
$sum=$sum+$n;
}
return $sum;
}
my $all = &sumNum(1..5);
print "$all\n";
#哈希打印
sub show_hash{
my %hash = @_;
for my $k(keys %hash){
print"$k: $hash{$k}\n";
}
}
&show_hash({"name"=>"a", "number"="b"});
命令行参数传递
内置变量@ARGV
使用@ARGV传递参数可以使脚本更通用
数组:用于存储命令行里的字符串
open(IN, "$ARGV[0]") or die"$!";
open(OUT, "$ARGV[1]") or die "$!";
命令行:perl my_script.p