02.Perl -- 标量、数组、引用

2022-05-18  本文已影响0人  QXPLUS

1. 标量(变量)

数字标量:值是“数字”的标量

Perl中的数字:

字符串标量

单引号 vs 双引号

标量的声明

$test1=5;
$test2=10;
...
my $result=$test1+$test2

标量的作用域

私有变量,分为my 类型和local类型

sub g_print{
    print "$x\n";
}

sub test_my{
    my $x=11;
    print "call-my $x\n";
    g_print
}

sub test_local{
    local$x=20;
    print "call-local $x\n";
    g_print
}

$x=9;
test_my;
# call-my 11
# 9
test_local
# call-local 20
# 20
print $x;
# 9

2. 数组

@a= (1, 2, 'Hello');
# 可以通过下标调用
print "$a[0]\n";
# 1
print "$a[1]\n";
# 2
print "$a[2]\n";
# Hello

范围操作符..

.., 该操作符会从坐标的数字以此+1,产生一串数字

qw 应用于纯字符串列表

数组赋值

@array1=("string1",1.5,418)
@array2=@array1
# 对array2的修改不会影响array1
#!perl -w
use warnings;
# 在这里 @ARGV 代表的是ARGV这个参数数组的长度(即输入的参数个数)
if (@ARGV != 5) {
    print "Usage: perl subreads.pl reads1 reads2 random sample dir\n";
    exit;
}
@array=(5..9)
$test1=pop(@array)
# test1=9
# array=(5,6,7,8)
@array=(5,6)
push(@array,8)
# array = (5,6,8)
push(@array,1..5)
# array = (5,6,8,1,2,3,4,5)
@array2=(5..9)
$test1=shift(@array)
# test1=5
# array2=(6,7,8,9)
@array2=(5,6)
unshift(@array2,8)
# array2 = (8,5,6)
unshift(@array2,1..5)
# array2 = (1,2,3,4,5,8,5,6)

特殊索引值

3.引用

引用的方法

软引用

$scalar="Hello"
@scalar=("Hello", "World",123)

## 通过引用变量名来引用变量
$refer="scalar"
-  软引用的解引用
$$refer  # 类似于 $scalar
# 数组的引用
$$refer[0]  # 类似于 $scalar[0]

软引用相当于替代变量名的过程

硬引用 (常用)

$foo='hello';
# 通过引用地址来引用变量foo
$scalerref=\$foo;
# 常量引用
$constref=\186_282.42
# 数组引用
@arr=1..100
$arrayref=\@arr;
# 匿名数组的引用
$arrRef=[1,2,3,4,5];
$foo='hello';
$scalerref=\$foo;
# 变量解引用
${$scalerref}  # 简写 $$scalarref

$constref=\186_282.42
# 常量解引用
${$constref}  # 简写 $$constref

@arr=1..100
$arrayref=\@arr;
# 数组解引用
${$arrayref}[0]

$arrRef=[1,2,3,4,5];
# 匿名数组的解引用
${$arrRef}[0]
上一篇 下一篇

猜你喜欢

热点阅读