`
zccst
  • 浏览: 3310293 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

perl脚本——几种基本变量

    博客分类:
  • perl
 
阅读更多
[置顶]
$v     普通变量
@arr 数组变量
%arr 关联数组  格式:%ARRAY=(key1,value1,key2,value2,key3,value3);

perl学习
(每天进步一点点)

几种基本变量(变量、数组和散列)
      标量定义,以$号开头,如:$num =1;
  数组定义,以@开头,如:@array = (1,2,3);
  数组元素调用 @array[index],其中index表示数组下标,如上例,@array[0]的值是1
  散列定义,以%开头,如:%hash=("a",1,"b",2);
  散列调用 %hash,其中keys表示键值,多用字符串表示,注意hash的key必须具有唯一性,但value可以不唯一,为此hash的key经常被用来做唯一化处理,如上例中的"a", "b", vaules是keys对应的值,如1,2。$hash{"b"}的值是2。


一、数组——较简单


二、关联数组——本质是hash存储
1,创建关联数组
    可以用单个赋值语句创建关联数组,如:
    %fruit = ("apples",17,"bananas",9,"oranges","none");
    此语句创建的关联数组含有下面三个元素:

    下标为apples的元素,值为17
    下标为bananas的元素,值为9
    下标为oranges的元素,值为none

    注:用列表给关联数组赋值时,Perl5允许使用"=>"或","来分隔下标与值,用"=>"可读性更好些,上面语句等效于:
    %fruit = ("apples"=>17,"bananas"=>9,"oranges"=>"none");


2,从数组变量复制到关联数组
    与列表一样,也可以通过数组变量创建关联数组,当然,其元素数目应该为偶数,如:
    @fruit = ("apples",17,"bananas",9,"oranges","none");
    %fruit = @fruit;
    反之,可以把关联数组赋给数组变量,如:
    %fruit = ("grapes",11,"lemons",27);
    @fruit = %fruit;
    注意,此语句中元素次序未定义,那么数组变量@fruit可能为("grapes",11,"lemons",27)或

("lemons",27,"grapes",11)。
    关联数组变量之间可以直接赋值,如:%fruit2 = %fruit1; 还可以把数组变量同时赋给一些简单变量和一个关联数组变量,如:
    ($var1, $var2, %myarray) = @list;
    此语句把@list的第一个元素赋给$var1,第二个赋给$var2,其余的赋给%myarray。
    最后,关联数组可以通过返回值为列表的内嵌函数或用户定义的子程序来创建,下例中把split()函数的返回值--一个列表--赋给一个关联数组变量。

    1: #!/usr/local/bin/perl
    2:
    3: $inputline = <STDIN>;
    4: $inputline =~ s/^\s+|\s+\n$//g;
    5: %fruit = split(/\s+/, $inputline);
    6: print ("Number of bananas: $fruit{\"bananas\"}\n");

    运行结果如下:

    oranges 5 apples 7 bananas 11 cherries 6
    Number of bananas: 11

3,元素的增删
    增加元素已经讲过,可以通过给一个未出现过的元素赋值来向关联数组中增加新元素,如$fruit{"lime"} = 1;创建下标为lime、值为1的新元素。
    删除元素的方法是用内嵌函数delete,如欲删除上述元素,则:
    delete ($fruit{"lime"});
注意:
    (1) 一定要使用delete函数来删除关联数组的元素,这是唯一的方法。
    (2) 一定不要对关联数组使用内嵌函数push、pop、shift及splice,因为其元素位置是随机的。

4,列出数组的索引和值
    上面已经提到,keys()函数返回关联数组下标的列表,如:

    %fruit = ("apples", 9,
              "bananas", 23,
              "cherries", 11);
    @fruitsubs = keys(%fruits);

    这里,@fruitsubs被赋给apples、bananas、cherries构成的列表,再次提请注意,此列表没有次序,若想按字母顺序排列,可使用sort()函数。
    @fruitindexes = sort keys(%fruits);
    这样结果为("apples","bananas","cherries")。类似的,内嵌函数values()返回关联数组值的列表,如:

    %fruit = ("apples", 9,
               "bananas", 23,
               "cherries", 11);
    @fruitvalues = values(%fruits);

    这里,@fruitvalues可能的结果为(9,23,11),次序可能不同。

5,用关联数组循环
Perl提供一种更有效的循环方式,使用内嵌函数each(),如:

    %records = ("Maris", 61, "Aaron", 755, "Young", 511);
    while (($holder, $record) = each(%records)) {
      # stuff goes here
    }

6,用关联数组创建数据结构
    用关联数组可以模拟在其它高级语言中常见的多种数据结构,例如:链表、结构和树。
例:(单)链表
    链表是一种比较简单的数据结构,可以按一定的次序存贮值。每个元素含有两个域,一个是值,一个是引用(或称指针),指向链表中下一个元素。一个特殊的头指针指向链表的第一个元素。
    在Perl中,链表很容易用关联数组实现,因为一个元素的值可以作为下一个元素的索引。下例为按字母顺序排列的单词链表:

    %words = ("abel", "baker",
              "baker", "charlie",
              "charlie", "delta",
              "delta", "");
    $header = "abel";

    上例中,简单变量$header含有链表中第一个单词,它同时也是关联数组第一个元素的下标,其值baker又是下一个元素的下标,依此类推。
    下标为delta的最后一个元素的值为空串,表示链表的结束。
    在将要处理的数据个数未知或其随程序运行而增长的情况下,链表十分有用。
分享到:
评论

相关推荐

    perl语言脚本文档说明

    第2学时 Perl的基本构件:数字和 字符串 14 2.1 直接量 14 2.1.1 数字 14 2.1.2 字符串 15 2.2 标量变量 16 2.3 表达式和运算符 18 2.3.1 基本运算符 18 2.3.2 数字运算符 19 2.3.3 字符串运算符 19 2.4 ...

    Learning Perl ( 中文第五版)——part_1

    3. **Perl语法**:介绍基本的Perl语法,包括变量、标量、数组、哈希等数据类型,以及流程控制语句(如条件语句和循环)。掌握这些基础知识是编写任何Perl程序的基础。 4. **字符串操作**:Perl对字符串的处理非常...

    批处理脚本学习笔记——程序员版.pdf

    它的基本工作原理包括以下几个步骤:首先进行变量替换,然后去除特殊字符的转义,接着执行语法检查并生成指令序列,最后执行重定向操作。理解cmd解释器的工作原理对于编写有效的批处理脚本至关重要。 批处理基本...

    Perl语言教程 Perl语言入门

    Perl语言是一种功能强大的脚本编程语言,以其在文本处理、系统管理、网络编程以及Web开发中的广泛应用而闻名。本教程将带你逐步了解Perl语言的基础知识,帮助你从入门到掌握。 首先,Perl语言的设计理念是“实用胜...

    最全的 perl 文档手册

    Perl是一种强大的脚本编程语言,尤其在文本处理和系统管理任务方面表现卓越。这份"最全的 Perl 文档手册"是Perl程序员不可或缺的资源,它包含了官方提供的最新、最全面的指导材料。手册以HTML格式呈现,使得在各种...

    BioPerl_bioinformatics

    Perl中有三种基本的变量类型:标量变量、数组变量和哈希表变量。 - **标量变量**:用来存储单个值,如整数、字符串等。 - **数组变量**:用来存储一系列相同类型的值。 - **哈希表变量**:用来存储键值对。 ##### ...

    PERL编程24学时教程.rar

    10. **脚本和命令行参数**:Perl脚本可以直接在命令行中运行,并接收参数。了解如何处理这些参数是编写可执行脚本的关键。 通过这个24学时的教程,你将系统地学习到这些内容,并逐步建立起对Perl编程的深入理解。每...

    Perl编程思想

    Perl是一种功能强大的脚本语言,尤其在文本处理、系统管理、网络编程等领域有着广泛的应用。这本书籍为读者提供了从入门到高级的全方位学习路径,旨在帮助程序员充分利用Perl的灵活性和高效性。 Perl编程的核心理念...

    编程语言规范检查模型的设计与实现——C语言规范.pdf

    通过使用词法分析和正则表达式等技术手段,并利用Perl脚本语言来实现自动化检查,该模型能够对C语言代码进行全面的规范性检查,并在软件维护中发挥重要作用,有助于提高代码质量、减少维护成本。

    Springer Analyzing Computer Systems Performance with Perl

    本书不仅提供了理论上的支持,还通过大量的实例和Perl脚本代码帮助读者更好地理解和应用队列理论,尤其是在计算机系统性能分析领域。对于IT专业人士、系统管理员、软件开发者以及性能测试工程师来说,这本书是学习和...

    hadoop杀僵尸节点

    此外,脚本还利用了Perl脚本来解析和处理命令输出,提高自动化程度和效率。 ### 总结 “hadoop杀僵尸节点”是一项关键的Hadoop运维实践,通过自动化脚本实现对集群内异常节点的有效管理,避免资源浪费,保障集群...

    Perl docs in PDF-开源

    Perl是一种强大的、跨平台的脚本编程语言,广泛用于文本处理、系统管理、网络编程以及Web开发等多个领域。"Perl docs in PDF-开源"标题暗示了这是一个关于Perl编程语言的文档集合,以PDF格式提供,方便用户离线阅读...

    编程语言比较

    本文将深入探讨几种常见的编程语言——Foxpro、Basic、C/C++、Pascal以及现代Web开发语言如Java、.NET、Perl、PHP的特点与差异,帮助读者更好地理解和选择适合特定需求的编程语言。 #### 1. 大小写敏感性 - **...

    A byte of Python

    - 讨论了Python中的几种内置数据结构,如列表。 - 介绍了对象和类的基本概念。 通过以上内容,可以看出《A Byte of Python》不仅覆盖了Python编程的基础知识,还涉及了许多高级主题和技术细节,非常适合初学者...

    十天学会php

    其语法吸收了C语言、Java以及Perl的特点,易于学习且使用灵活,广泛应用于各种网站开发场景。 #### 第一天:了解PHP基本语法 **1. 嵌入方法** PHP代码通常嵌入在HTML文档中,通过特定的标记来区分PHP代码和HTML...

    电子商务网站平台3p设计技术与网络数据库.doc

    1. ASP技术由微软公司开发,它是一种服务器端的脚本环境,主要使用VBScript或JavaScript作为编程语言。ASP能够通过ODBC(Open Database Connectivity)或直接驱动法连接并操作Windows平台上的数据库。在电子商务平台...

Global site tag (gtag.js) - Google Analytics