#!/usr/bin/perl
#变量初始化相关
#-----------------------------
# 如果$b为真则用$b,否则用$c
$a = $b || $c;
# 将$y赋给$x,除非$x已经为真
$x ||= $y
#-----------------------------
# 如果$b已经定义则使用$b,否则使用 $c
$a = defined($b) ? $b : $c;
#-----------------------------
#如果$bar已经定义则使用$bar,否则使用 "DEFAULT VALUE"
$foo = $bar || "DEFAULT VALUE";
#-----------------------------
#从这句开始的下面4个语句同义,都是将命令行的第一个参数(如果存在的话)赋给$dir;否则将"/tmp"赋给$dir
#@ARGV--全局变量(数组),存储命令行的输入;
#如:#perl test.pl /root/myperl data.txt
#则 $ARGV[0]为"/root/myperl",$ARGV[1]为 "data.txt"
$dir = shift(@ARGV) || "/tmp";
#-----------------------------
$dir = $ARGV[0] || "/tmp";
#-----------------------------
$dir = defined($ARGV[0]) ? shift(@ARGV) : "/tmp";
#-----------------------------
$dir = @ARGV ? $ARGV[0] : "/tmp";#用了三目运算符(?:),用过C的人都会
#-----------------------------
$count{ $shell || "/bin/sh" }++;
#-----------------------------
# 输出 Unix 系统的用户,结果在Windows上的getlogin()函数也能用,:-)
$user = $ENV{USER}
|| $ENV{LOGNAME}
|| getlogin()
|| (getpwuid($<))[0]
|| "Unknown uid number $<";
#-----------------------------
@a = @b unless @a; # 当且仅当@a为空时复制@b到@a
@a = @b ? @b : @c; # 如果@b非空,则复制到@a, 否则@c
#-----------------------------
#下面感受一下Perl列表(list)数据结构的强大。
#在C语言中我们交换两个变量的值的时候我们会怎么做?
#可能需要一个临时变量temp做临时存储。
#下面看一下Perl是怎么做的吧。
#-----------------------------
#Perl只需要这样一句话即可交换两个变量的 值
#($VAR1, $VAR2) = ($VAR2, $VAR1);
#-----------------------------
$temp = $a;
$a = $b;
$b = $temp;
#-----------------------------
$a = "alpha";
$b = "omega";
($a, $b) = ($b, $a); # 交换$a和$b的值
#-----------------------------
($alpha, $beta, $production) = qw(January March August);
# move beta to alpha,
# move production to beta,
# move alpha to production
($alpha, $beta, $production) = ($beta, $production, $alpha);
#这个就不作解释了,很容易理解
#-----------------------------
|