`

perl中的小箭头大箭头

    博客分类:
  • Perl
 
阅读更多

-> 有两种用法,都和解引用有关。

第一种用法,就是解引用。
根据 -> 后面跟的符号的不同,解不同类型的引用,
->[] 表示解数组引用,->{} 表示解散列引用,->() 表示解子程序引用。
例子:
$arr_ref = \@array;
$arr_ref->[0] 访问数组 @array 的第一个元素。
$hash_ref = \%hash;
$hash_ref->{foo} 访问 %hash 的 foo 分量
$sub_ref = \&test;
$sub_ref->(1, 2, 3) 使用参数列表 (1,2,3) 来调用 &test 这个子程序。

第二种用法,就是调用类或者对象的方法。
格式:
$obj->method();
或者
ClassName->method();
例如:
$pop3->login( $username, $password );
my $ftp = Net::FTP->new("some.host.name", Debug => 0);
这两种用法略有不同,
但是总的来说,符合以下规则:


QUOTE:
假设 -> 的左操作数(就是左边那个值,如 $pop3 和 Net::FTP)是 $left,右操作数(就是右边那个值,如 login 和 new)是 $right,那么 -> 的运算规则就是:

if ( ref $left 有效 ){    # 也就是说 $left 是个引用,而不是个裸字
    $ClassName = ref $left;  # 取引用的类型,当作类名称
}
else{
    $ClassName = $left;       # 直接把裸字当作类名称
}

然后调用:
&{$ClassName::$right}( $left, 原参数列表 )
也就是说把类名称和右操作数拼在一起,当作子程序名称(注),并把左操作数当作第一个参数。

注:Perl 解释器要做的工作其实要比这复杂,它还要考虑到继承的问题。
-------------------------------------------------------------
当给 hash 赋值时,有时并不明显哪些元素是 keys,那些是 values。例如,在下面的赋值中,我们需要仔细的计数,“ key,value,key,value,…” ,来判断2.5 是key 还是 vlaue:
%some_hash = ( “ foo” , 35, “ bar” , 12.4 ,2.5, “ hello” , “Wilma” , 1.72e30, “ betty” , “ bye\n” );

如果 Perl 能提供一种方法,让我们轻易的辨别出哪一个是 key,哪一个是 value,那该有多好?Larry 也想过这个问题,因此发明了大箭头符号(=>)◆。对于 Perl 来讲,其作用和和逗号(,)类似,因此有时称作 “ 胖逗号(fat comma)” 。Perl 语法中,在需要逗号(,)的时候,都可以使用大箭头符号替换;对于 Perl来讲,它们是一样的◆。下面是给 hash 赋值的另一种方法:

◆是的,还有小箭头(->) 。它和引用一起使用,这是高级话题。如果你准备好了,可以参见perlreftut 和perlref 的帮助手册
◆它们在技术上还是有一点不同:任何大箭头符号(=>)左侧的 bareword(由字母,数字,下划线,但不是由数字开头,前面有可选的加号或减号, 组成的序列) 都暗含着由引号括起来了的。因此可以省略掉大箭头符号(=>)左侧bareword上的引号。你也可以忽略掉hash的花括号中的引号,如果里面只有作为key的bareword.

my %last_name = (
“fred” => “flintstone”,
“dino” => undef,
“barney”=> “rubble”;
“betty”=> “rubble”,
);

上面代码中,很容易辨别出哪一个是 key,哪一个是 value。注意列表中最后一个逗号。我们早期讨论过,这个逗号是没什么用的,但有时能给我们带来方便;如果我们要加入新的元素到 hash 中,我们只需知道每一行都有 key/value 对,结尾有逗号。Perl 会查看不同元素之间的逗号,以及列表结尾处的逗号(此逗号非必需的)

分享到:
评论

相关推荐

    perl在生物信息中的应用

    本书介绍了Perl中对象、方法和类的概念,使用Perl中的类(无需编写),以及Perl面向对象编程特有的箭头表示法(->)。此外,还包含了许多Perl类的例子(例如Gene1、Gene2.pm、Gene3.pm等),这些例子有助于读者理解...

    俄罗斯方块perl版

    在这个项目中,我们将探讨如何利用Perl来创建一个具有完整功能的俄罗斯方块游戏。 首先,Perl中的游戏开发通常涉及到几个关键部分:游戏逻辑、用户输入处理、图形界面和声音效果。在《俄罗斯方块Perl版》中,游戏...

    Perl语言编程(大骆驼)

    ### Perl语言编程(大骆驼)知识精要 #### 第一章 Perl概述 - **从头开始** - Perl是一种高级脚本语言,以其灵活性、强大的文本处理能力以及丰富的库支持而著称。 - **自然语言与人工语言** - **变量语法**:Perl...

    Perl 语言编程 全面讲解Perl各个部分

    这部分详细介绍了 Perl 中各种操作符的使用方法,包括项和列表操作符、箭头操作符、自增和自减操作符等。 **3.1 项和列表操作符(左向)** - **箭头操作符**:用于访问对象的方法或属性。 - **自增和自减操作符**:...

    perl oop编程

    - 在Perl中,对象的方法调用通常采用箭头(`->`)符号。 - 示例代码中虽然没有具体的非构造函数方法调用,但在实际应用中可以参考`$object->method_name();`这样的格式。 ### 示例代码解析 在给定的部分内容中,我们...

    Perl的面向对象编程

    Perl中的方法调用使用箭头操作符`->`,如`$object->method()`. 继承是通过`@ISA`数组实现的,`@ISA`包含了类的父类列表。子类可以覆盖或扩展父类的方法。 四、封装与访问控制 Perl没有内置的访问控制机制,但可以...

    perl programing 编程基础版本

    - 大小写敏感。 变量分为几种类型: - **1.2.2 单数变量** - `$` 开头表示标量变量,用于存储单一的值,如整数、浮点数、字符串等。 - **1.2.3 复数变量** - `@` 表示数组变量,用于存储一系列的值。 - ...

    中文Perl语言教程.pdf

    深入分析了Perl中各类操作符的使用,包括项和列表操作符、箭头操作符、自增自减操作符、指数运算、乘法、附加、移位、文件测试操作符、关系操作符、相等操作符、位操作符、逻辑操作符、条件操作符等。 ### 第四章:...

    Perl 语言编程

    ### Perl 语言编程知识...以上总结了 Perl 语言编程中的主要知识点,这些内容不仅包含了 Perl 的基础语法和数据类型,还涉及到了更为复杂的编程概念和技术。对于初学者而言,熟悉这些基本概念是学习 Perl 的重要一步。

    Perl语言入门.pdf

    使用哈希时,程序员可以利用大箭头符号(=>)来简化哈希键值对的定义,同时也可以通过哈希函数来操作哈希中的元素。 由于Perl是一种实用主义的语言,它包含了许多内嵌的警告(warnings),这些警告能够帮助程序员在...

    perl_hash 函数

    上面的代码中,大箭头符号明确了 `"www"` 是 key,而 `1` 是 value。 #### 五、Perl Hash 函数 - **`keys` 和 `values` 函数**: `keys` 函数会返回哈希中的所有 key,而 `values` 函数返回所有的 value。 ```...

    Perl高级教程人称“大骆驼”(免费)

    第一章 Perl概述............................................................................................................................10 1.1 从头开始.................................................

    PERL语言编程

    - Perl支持复杂的嵌套数据结构,如数组中的数组、哈希中的数组、哈希中的哈希等。 - 示例:`@arr_of_hashes = ({name => 'John'}, {name => 'Jane'});` - **1.2.5 简单数据结构** - 指数组和哈希等基础数据结构...

    perl语言编程(上)

    在接下来的篇幅中,我将详细介绍在《perl语言编程(上)》这本书中所涉及的主要知识点。 第一章Perl概述中介绍了Perl的基本概念、变量语法、简单与复杂数据结构、文件句柄、操作符、流程控制以及正则表达式等内容。...

    Mastering Perl Bioinformatics

    - **箭头表示法**:介绍了Perl中用于访问对象属性和调用方法的箭头表示法。 - **Gene1示例**:通过一个名为Gene1的具体Perl类的例子,展示了如何在生物信息学项目中实现和使用对象导向编程。 #### 四、总结 ...

    perl24hour7

    哈希是Perl编程语言中的核心数据结构之一,它提供了一种高效的方式来存储和检索键值对。哈希是基于关联数组的概念,但Perl中通常称为哈希,用百分号(%)来标识。哈希允许通过唯一的键(关键字)来快速访问和操作...

    Perl语言编程 larry wall

    - **2.6.2 字串文本**:字符串处理是Perl的一大特点。 - **2.6.3 选择自己的引号**:Perl中可以使用单引号、双引号等多种引号形式。 - **2.6.4 要么就完全不管引起**:书中解释了何时使用不同类型的引号。 - **...

    Mastering_Perl_for_Bioinformatics

    箭头符号是Perl中调用对象方法的标准方式,它连接对象实例和方法名称,以执行特定操作。 #### 3.5 Gene1:一个Perl类示例 通过一个具体的类示例,如`Gene1`,可以深入了解类的定义、属性和方法的实现。 #### 3.6 ...

Global site tag (gtag.js) - Google Analytics