perl入门

本文深入探讨Perl语言的实用编程技巧,包括数组和哈希的操作、变量作用域、函数定义及调用,以及如何处理文件输入输出。文章还介绍了特殊变量的作用,并提供了代码示例帮助理解。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

1.print @chr_length 输出:1020304050 ;要让每个数字间有间隔,print "@chr_length" 输出:10 20 30 40 50

2.在数组首尾添加和取出元素

push @chr_length,60;

$last_chr=pop @chr_length;

unshift @chr_length,60;

$first_chr=shift @chr_length;

3.注释

单行注释  为在语句的开头用字符# 

多行注释

  • =pod、 =cut只能在行首。并且=pod前面空一行,=cut后面空一行
  • 以=开头,以=cut结尾。
  • =后面要紧接一个字符,=cut后面可以不用。

=pod

xxxxx

=cut

4.vi中设置显示行号 

:set nu

5.哈希赋值

#哈希赋值
%chr_length=(
        'chr1'=>10,
        'chr2'=>20
);

$chr_length{'chr3'}=30;

#取值
if(exists $chr_length{'chr3'}){
    $chr3=$chr_length{'chr3'};
}else{
    print "chr3 not exists\n";
}

@chrs = keys %chr_length;
@lengths = values %chr_length;

#哈希循环
while(($chr,$length)=each %chr_length){

}

undef 

未初始化的变量称为undef

将undef当作数字使用时,它会表现的像0;

当作字符串使用时,它会表现的像空字符串。

6.$input=shift @ARGV;

7.常用方法

钻石操作符;

while(<IN>){

}

#!/usr/bin/perl
#命令行参数
$input_file=shift;

#定义变量
%chr_length;
$total_length;
$avg_length;
$max_length_chr;

$output;

#输入
open IN ,$input_file or die "$input_file not exists\n";     #打开句柄失败提醒

while(<IN>){              #循坏读取,直到结尾  

chomp;                    #去除分隔符

($chr,$length)=split(/\t,$_); #提取重要信息  
$chr_length{$chr}=$length;
}

#计算 控制流
map{$total_length+=$_;} values %chr_length;


=pod
输出到文件
open OUT,">",$output_file or die "file not exists!";
......
print OUT "......"
=cut

8.变量作用域;

私有(my):仅在当前{}内有效,没有{}时,截止到程序结尾。

全局(our):{}外可以访问。

9.理解函数

#!/usr/bin/perl -w

#调用函数
$total_length=&sum(values %chr_length);

#定义函数
sub sum{
    my @length=@_;
    my $total_length;
    map {$total_length+=$_;} @length;
    return $total_length;
}


#!/usr/bin/perl -w
#
my @a=(1,2,3);
my @b=(4,5,6);

&test(\@a,\@b);

sub test{
    my ($a_href,$b_href)=@_;
    my @a = @$a_href;
    my @b = @$b_href;

     print "a:@a\n";
     print "b:@b\n";
}


#a:1 2 3
#b:4 5 6

10.

特殊变量: $[

特殊变量 $[ 表示数组的第一索引值,一般都为 0 ,如果我们将 $[ 设置为 1,则数组的第一个索引值即为 1,第二个为 2,以此类推。一般情况不建议使用特殊变量 $[,在新版 Perl 中,该变量已废弃。

# 定义数组
@sites = qw(google taobao runoob facebook);  #qw/google taobao runoob facebook/均可
print "网站: @sites\n";
 
# 设置数组的第一个索引为 1
$[ = 1;
 
 
#"\"转义后,会输出@sites[1],或者是' ',通过对符号进行反斜杠转义,或者使用单引号而不是双引号  eg:print "\@array";    # "@array"   print '@array';    # "@array"
print "\@sites[1]: $sites[1]\n"; 
print "\@sites[2]: $sites[2]\n";


网站: google taobao runoob facebook
@sites[1]: google
@sites[2]: taobao

 

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值