加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl基本语法实例,变量,数组,函数,if, for, while

发布时间:2020-12-15 23:56:02 所属栏目:大数据 来源:网络整理
导读:#!/usr/bin/perl -w########################################################################## File Name: test.pl# Author: kevin xiang# Created Time: 2014年07月04日 星期五 13时53分43秒#########################################################
#!/usr/bin/perl -w
#########################################################################
# File Name: test.pl
# Author: kevin xiang
# Created Time: 2014年07月04日 星期五 13时53分43秒
#########################################################################

print "hello word n";

print "---- 变量定义用$ 符号------n";
$a=`echo xxxx`;
print "$a";

$b='aaaa'.'hhhh';
$c="bbbb";
$d="$b"."$c";
$d.='eeee';
print "$dn";

print "d: $dn";

$bl1 = 1>=0;
$bl2 = 1>=3;
print $bl1;
print $bl2;

print "---- if elsif else 条件判断语句 ----n";
$if1=2;
if($if1 == 1){
	print "passn";
}elsif($if1 == 2){
	print "==2n";
}else{
	print "failn";
}

#chomp($in1 = <STDIN>);
#print "your input: $in1n";

#if(defined($in2)){
#	print "1";
#}else{
#	print "2";
#}

print " ------- @ 符号来定义数组 ------ n";
@array = (1,2,3,"4")x4;
print "$array[1]n";
print "$#arrayn";
print "$array[-1] n";

$xtest="123"x5;
print "$xtestn";


print "pop push 针对数组的末尾操作 n";
print "pop 取出最后一个,返回数组剩下的, push将一个元素添加到末尾 n";
print "shift unshift 为 pop push的反向操作,针对数组头n";

@array2 = 5..10;
print "$#array2  ----  $array2[-1] n";
pop @array2;
print "$#array2  ----  $array2[-1] n";
pop(@array2);
print "$#array2  ----  $array2[-1] n";

print "---------- array3 ----------n";
@array3 = 1..3;
print "$#array3  ----  $array3[-1] n";
push @array3,9;
print "$#array3  ----  $array3[-1] n";
push @array3,10...12;
print "$#array3  ----  $array3[-1] n";

print "---------- array4 ----------n";
@array4 = 1..3;
print "@array4  ----  $array4[0] n";
shift @array4;
print "@array4  ----  $array4[0] n";
unshift @array4,99;
print "@array4  ----  $array4[0] n";
unshift(@array4,'98');
print "@array4  ----  $array4[0] n";

print "---------- array5 ----------n";
@array5 = qw(eating rocks is wrong);
$array5 = "right";
print "@array5 ... $array5  n";
print "this is $array5[3] n";
print "this is ${array5}[3]n";
print "this is $array5"."[3]n";
print "this is $array5[3] n";

print "--------- for --------------n";
for($i=0; $i<10; $i++){
    print "for: $in";
}

#实际for和foreach是一样的
#中断循环对比C 的break和continue,Perl分别对应的是 last 和 next
#Perl中还特有 redo,调到当前循环的顶端,不进行条件判断就再次执行本次循环
#next会进入下一次循环,redo会继续执行本次循环
print "--------- foreach ----------n";
@rocks = qw(bedrock slate lava);
print "before rocks: n @rocks n";
foreach $rock (@rocks){
        #如果有 redo 应该跳到的位置
    $rock = "t$rock";
    $rock .= "n";
    print "new rock: $rock n";
}
print "after rocks: n @rocks n";

print "--------- reverse 翻转 ----------n";
@reverse1 = reverse 6..9;
print "@reverse1 n";
@reverse2 = reverse @reverse1;
print "@reverse2n";

print "--------- sort 排序 -------------n";
@sort1 = qw(aaa ccc eee bbb ddd);
print "@sort1n";
@sort1 = sort(@sort1);
print "@sort1n";


print "--------- context -----------n";
print "变量和列表会根据上下文给出不同的值n";
print 1+@sort1."n";
@rocks = qw(xxx aaa ccc);
print "I have",@rocks,"rocks!n";
#强制转换为标量
print "I have",scalar @rocks,"rocks!n";

print "--------- sub ----------------n";
sub subtest1{
    $temp=$a.$b;
    $temp;
}
$a = "1";
$b = "2zzzzz";
$c = &subtest1;
print "c: $cn";

sub addfunc{
    $size = @_;
    print "param size: $sizen";
    my($num1,$num2);
    ($num1,$num2) = @_;
    $num1 + $num2;
}

$addresult = &addfunc(100,99);
print "addresult: $addresultn";

print "-------- 子程序 == 函数 ----n";
print "函数参数放在 @_数组内,可以用shift循环的切出第一个参数n";
print "my() 定义局部变量n";
print "子程序的返回值就是最后一部的计算值n";

sub max{
    my($maxValue) = shift @_;
    foreach(@_){
        if($_>$maxValue){
            $maxValue = $_;
        }
    }
    $maxValue;
}
@numset = (100,600,3000,3001);
$maxValue = &max(@numset);
print "maxValue: $maxValuen";


sub which_element_is{   
    if(@_ < 2){
        return "输入参数个数不能小于2";
    }

    my($what,@array) = @_;
    my $index = 0;
    foreach(@array){
        if($what eq $_){
        #判断字符串相等不能使用==,只能用eq
            print "Find this element [$_]: $indexn";
            return $index;
        }
        $index++;
    }
    return "can't find this element";    
}
@names = qw(kevin xiang jie);
$which_element = &which_element_is("jie",@names);
print "which_element: $which_elementn";

print "上面的程序都是不严谨语法, 开头添加 use strict 变为严谨语法检测n";
print '定义变量时需要用my定义,my $baa = 1;  '."n";







(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读