`

perl引用 声明方式 调用方式 解引用

    博客分类:
  • perl
阅读更多

一、声明,调用

perl的引用,相当于c中的指针,有以下几种类型

1、一般的声明方式

$scalarref = \$foo;          #标量引用 SCALAR ,  $foo='hello';
$constref  = \186_282.42;#标量引用 SCALAR 
$arrayref  = \@arr;      #数组引用   ARRAY  ,   @arr=1..100;
$hashref   = \%hash;      #hash引用   HASH,%hash=('a'=>1,'b'=>2);
$coderef   = \&add;         #子过程引用  CODE,sub add{($a,$b)=@_;  return $a+$b;}
$globref   = \*STDOUT;   #GLOB句柄引用

 

使用方式(以下的数组下标,键值假设都存在):

$$scalarref ;

$$constref ; 

$$arrayref [0] ;  或 $arrayref ->[0];

$$hashref{'a'};    或 $hashref->{'a'};

&$coderef(1,2) ; 或 $coderef->(1,2); 

 2、匿名的方式

另外声明方式采用匿名方式声明 如下(针对数组,hash,子过程)

$arrRef=[1,2,3,4,5];                #指向匿名数组的引用

$hashRef={'a'=>1,'b'=>2};    #指向匿名hash的引用

$subRef=sub{return 1;};        #指向匿名子过程的引用

使用方式是一样的

 

3、符号表引用的声明方式

   $scalarref = *foo{SCALAR};      # 和 \$foo 一样
   $arrayref  = *ARGV{ARRAY};         # 和 \@ARGV 一样
   $hashref   = *ENV{HASH};      # 和 \%ENV 一样
   $coderef   = *handler{CODE};         # 和 \&handler 一样
   $globref   = *foo{GLOB};          # 和 \*foo 一样
   $ioref     = *STDIN{IO};             # ?...

二、解引用

声明一个引用一般是在变量名前加个'\',而解引用是在变量名前加'$',真是有趣

如:

$s='hello';

$sRef=\$s;

print $$sRef;   #输出 hello

 

理解了这点,看下面的

$refrefref = \\\"howdy";
 print $$$$refrefref;   #输出 howdy

 

 

 

1
0
分享到:
评论

相关推荐

    perl函数调用:怎样从Perl中调用C库里的函

    例如,在示例中,`mytest.xs`文件在末尾增加了对`hello`函数的Perl接口声明,即`void hello() CODE: { hello(); }`,这样Perl程序就可以通过这个接口来调用C库中的`hello`函数。 #### 4. 修改Makefile.PL以包含C库 ...

    神奇的perl-最佳Perl入门

    - **语句**:Perl中的语句是构成程序的基本单位,如变量赋值、函数调用等。 - **结构**:Perl支持各种控制结构,如`if`、`for`、`while`等循环和条件判断语句。 #### 注释 - 单行注释使用`#`符号,例如:`# 这是一...

    perl.pdf

    Perl 中有两种主要的字符串引用方式:双引号和单引号。此外,还支持多行字符串(heredocs)。 #### 包、模块、记录和对象 Perl 支持面向对象编程,并通过包和模块来组织代码。 以上是对《Perl 5 指南:为 C/C++、...

    Perl技术内幕

    1. Perl基础语法:包括变量声明、数据类型、控制结构(如循环和条件语句)以及子程序(函数)的定义和调用。 2. 正则表达式:Perl与正则表达式有着深厚的关系,正则表达式在Perl中被广泛用于文本处理和模式匹配。 ...

    Perl语言参考手册中文htmlPerl语言参考手册中文html

    2. **数据类型**:Perl支持多种数据类型,如标量(字符串、数字)、数组、哈希(关联数组)、引用以及复合数据类型。这些数据类型的灵活使用是Perl强大功能的关键。 3. **变量**:Perl中的变量以符号“$”、“@”或...

    使用perl进行面向对象

    当对象不再被引用时,Perl会自动调用析构函数来清理资源。可以定义一个名为`DESTROY`的方法作为析构函数。 9. **继承(Inheritance)**: Perl的继承机制与其他面向对象语言有所不同,它只继承方法,不直接处理数据...

    最全的 perl 文档手册

    14. **perlref** 和 **perlsub**:涉及引用和子程序(子例程)的使用,包括匿名函数、引用和闭包。 通过学习这份手册,无论是初学者还是经验丰富的Perl开发者,都能获得对Perl语言的全面理解,并提升解决问题的能力...

    Perl PERL编程速成教程(上中下) pdf版

    2. **Perl语法基础**:包括变量声明、数据类型(标量、数组、哈希等)、控制结构(if-else、for、while循环)和流程控制。 3. **字符串和正则表达式**:讲解字符串操作函数和强大的正则表达式匹配功能,这是Perl...

    perl 技术内幕

    - **引用和引用操作**:引用是指向数据结构的指针,Perl中的引用支持更高级的数据结构设计。 #### 3. 文件和输入/输出处理 - **文件操作**:Perl提供了丰富的文件读写功能,如open/close/read/write等命令。 - **...

    perl文件用法

    - 变量不需要预先声明,但使用`strict`模式时需要先声明。 3. **字符串和数值操作** - Perl支持字符串和数值运算,如连接字符串、比较数值、算术运算等。 - `print`函数用于输出,例如`print "Hello, World!\n";...

    Perl 参考大全

    在"Perl参考大全"中,读者可以期待找到关于变量声明、流程控制(如if-else、for、while循环)、函数定义和调用、异常处理等内容的详细讲解。书中还可能涵盖Perl中的引用和指针,这是理解和创建复杂数据结构,如链表...

    example_perl.rar_dumpvar.pl_perl example_perl 例子

    学习Perl时,掌握基本语法是第一步,如变量声明、条件语句(if/else)、循环(while、for)、函数定义和调用等。然后深入理解引用类型(如数组引用、哈希引用)以及如何使用模块(如CPAN上的各种工具和库)将有助于...

    Perl入门及高级编程.rar

    5. **符号引用**:Perl允许对变量、数组、哈希等进行符号引用,这在处理复杂数据结构或动态编程时非常有用。 6. **并发编程**:Perl支持线程(threads)和进程(fork)实现并发,可以使用`threads`模块创建线程,`...

    perl经典教程

    #### 十三、Perl5中的引用(指针) **内容解析:** - **引用简介** - 引用是Perl中指向值的变量。 - **使用引用** - 使用`$ref`访问引用。 - **使用反斜线(\)操作符** - 创建引用。 - **引用和数组** - 数组的...

    PERL常见问题解答

    - 在Perl中,变量不需要预先声明,但推荐使用`my`、`our`或`local`关键字来定义变量的作用域。`my`用于局部变量,`our`用于共享同一作用域内的全局变量,`local`则用于临时改变全局变量的值。 2. **字符串与数字...

    PERL编程速成教程(文字中文版)

    函数的定义与调用也是基础内容,读者将学习如何创建和使用自定义函数,以及内置的Perl函数。 进入"高级特性",教程将涵盖更复杂的Perl技术。这可能包括引用,用于创建多维数组和复杂的数据结构,以及对象导向编程。...

    perl 入门 源码

    此外,面向对象编程在Perl中也是可行的,尽管它的实现方式与许多其他语言不同。通过`package`定义类,`new`构造对象,以及`->`操作符调用方法,你可以构建自己的对象系统。源码可能包含了简单的类定义和对象交互的...

Global site tag (gtag.js) - Google Analytics