Perl脚本学习笔记(四)

简介:
29.    一旦我们将模块载入,无论是否引入特定的函数,我们均可以使用全名进行引用。
    如:
    use File:Basename qw/ /; #没有引入函数
    my $dirname = File::Basename::dirname $name; #使用模块中的dirname

30.    散列:
    %表示进行散列,
    引用《Perl语言编程_3rd》(Larry Wall等人合著)的话:
    “散列是一组无序标量,可以通过和每个标量关联的字符串进行访问.因为这个原因,散列经常被称为关联数组.但是这个名字太长了,因为会经常提到它,我们决定给它起一个简短的名字.我们称之为散列的另外一个原因是为了强调它们是无序的.(在 Perl 的内部实现中,散列的操作是通过对一个散列表查找完成的,这就是散列为什么这么快的原因,而且无论你在散列中存储多少数据,它总是很快).然而你不能 push 或 pop 一个散列,因为这样做没有意义.一个散列没有开始也没有结束.不管怎么样,散列的确非常有用而且强大.如果你不能理解散列的概念,那你还不能算真正的了解 Perl.
    ......
    因为散列是一种特殊的数组,你可以通过 {} 来获取单个的散列元素.比如,如果你想找出与关键字 Wed 对应的值,你应该使用 $longday{"Wed"}.
    ......
    注意这个例子:
    $wife{"Jacob"} = ["Leah", "Rachel", "Bilhah", "Zilpah"];   
    $wife{"Jacob"}[0] = "Leah";
       $wife{"Jacob"}[1] = "Rachel";
       $wife{"Jacob"}[2] = "Bilhah";
       $wife{"Jacob"}[3] = "Zilpah";    
    
    $kids_of_wife{"Jacob"} = {
              "Leah"   => ["Reuben", "Simeon", "Levi", "Judah", "Issachar", "Zebulun"],
              "Rachel" => ["Joseph", "Benjamin"],
              "Bilhah" => ["Dan", "Naphtali"],
              "Zilpah" => ["Gad", "Asher"],};

    $kids_of_wife{"Jacob"}{"Leah"}[0]   = "Reuben";
       $kids_of_wife{"Jacob"}{"Leah"}[1]   = "Simeon";
       $kids_of_wife{"Jacob"}{"Leah"}[2]   = "Levi";
       $kids_of_wife{"Jacob"}{"Leah"}[3]   = "Judah";
       $kids_of_wife{"Jacob"}{"Leah"}[4]   = "Issachar";
       $kids_of_wife{"Jacob"}{"Leah"}[5]   = "Zebulun";
       $kids_of_wife{"Jacob"}{"Rachel"}[0] = "Joseph";
       $kids_of_wife{"Jacob"}{"Rachel"}[1] = "Benjamin";
       $kids_of_wife{"Jacob"}{"Bilhah"}[0] = "Dan";
       $kids_of_wife{"Jacob"}{"Bilhah"}[1] = "Naphtali";
       $kids_of_wife{"Jacob"}{"Zilpah"}[0] = "Gad";
       $kids_of_wife{"Jacob"}{"Zilpah"}[1] = "Asher";”

31.    每个嵌套的 my 会生成一个新变量,每个嵌套的 local 也生成一个新变量。但是每次你使用 our 的时候,你实际上是说同一个变量,不管你有没有嵌套。





本文转自 xkdcc 51CTO博客,原文链接:http://blog.51cto.com/brantc/119060,如需转载请自行联系原作者
目录
相关文章
|
存储
ASCII码可以表示汉字吗?
ASCII码可以表示汉字吗?
4399 0
|
NoSQL API 调度
.NET开源的轻量化定时任务调度,支持临时的延时任务和重复循环任务(可持久化) - FreeScheduler
.NET开源的轻量化定时任务调度,支持临时的延时任务和重复循环任务(可持久化) - FreeScheduler
337 0
|
机器学习/深度学习 并行计算 PyTorch
利用谷歌colab跑github代码AttnGAN详细步骤 深度学习实验(colab+pytorch+jupyter+github+AttnGAN)
Google Colab,全名Colaboratory,是由谷歌提供的免费的云平台,可以使用pytorch、keras、tensorflow等框架进行深度学习。其GPU为Tesla T4 GPU,有很强的算力,对于刚入门机器学习或深度学习的用户,这个平台是不二之选。
利用谷歌colab跑github代码AttnGAN详细步骤 深度学习实验(colab+pytorch+jupyter+github+AttnGAN)
|
7月前
|
存储 人工智能 JSON
Evolving Agents:开源Agent革命!智能体动态进化框架上线,复杂任务一键协同搞定
Evolving Agents 是一个开源的AI Agent管理与进化框架,支持智能代理之间的通信与协作,能够根据语义理解需求动态进化,适用于文档处理、医疗保健、金融分析等多个领域。
292 26
Evolving Agents:开源Agent革命!智能体动态进化框架上线,复杂任务一键协同搞定
|
8月前
|
人工智能 NoSQL Redis
Collaborative Gym:斯坦福人机协作框架开源!异步交互+三方感知,让你的AI学会主动补位
介绍Collaborative Gym,一个专注于人机协作的框架,支持异步交互和多种任务环境。
226 14
Collaborative Gym:斯坦福人机协作框架开源!异步交互+三方感知,让你的AI学会主动补位
|
算法 程序员 C语言
【深度揭秘】汇编语言:现代编程中不可或缺的秘密武器!它如何在幕后操控一切?
【8月更文挑战第31天】随着计算机科学的进步,尽管高级编程语言因易读和可维护而流行,汇编语言在特定领域仍不可或缺。本文介绍汇编语言基础及其在现代编程中的应用。汇编语言通过助记符表示机器码,便于编写和理解。例如,在x86架构下,加法指令可表示为 `add eax, ebx`。尽管高级语言提供更高抽象,但在优化性能瓶颈(如矩阵乘法)和嵌入式系统中精确控制硬件方面,汇编语言依然发挥重要作用。例如,通过AVX-2指令集优化矩阵乘法,或在实时系统中实现精确时间延迟。这些示例展示了汇编语言在现代编程中的独特价值。
233 3
|
存储 机器学习/深度学习 缓存
一文弄懂Python字典的使用
Python是一门广泛应用于数据分析、机器学习等领域的语言,而字典作为Python中最常用的数据类型之一,也被广泛使用。本文将详细介绍Python字典的相关知识点,包括字典的基础用法、高级用法、原理、优缺点、性能评估、使用场景、小技巧等等。
294 4
汉化FC(红白机)游戏需要用到哪些技术?
这篇文章介绍了FC(红白机)游戏文本汉化的基本流程和技术知识。主要步骤包括分析游戏ROM、寻找文本字符串、学习游戏代码、修改文本、修改ROM头信息、重新映射、测试和修正。文章还提供了汉化实例,详细讲解了如何使用各种工具,如VirtuaNES Debugger、NO$NES、6502 Simulator等进行ROM分析和修改。此外,文章还介绍了如何使用汇编语言编写自定义程序以实现大字体汉化和在游戏画面切换时恢复原来的VROM。整个过程需要对6502汇编语言、NES硬件架构和ROM结构有一定的理解和编程经验。
|
存储 人工智能 NoSQL
现代数据库技术演进与应用前景分析
本文探讨了现代数据库技术的演进历程及其在各领域的应用前景。首先介绍了传统数据库的局限性,随后分析了NoSQL、NewSQL以及分布式数据库等新兴技术的特点和优势。接着探讨了人工智能、物联网、大数据等领域对数据库技术提出的新要求,并展望了未来数据库技术的发展趋势与应用前景。
|
Linux 数据处理
Linux中的pr命令:数据格式化与打印的艺术
`pr`命令是Linux下用于文本格式化的工具,擅长分页、设置页眉页脚及列宽,方便打印和阅读。它可以处理文件、管道输入,常用参数如 `-h` 设定页眉,`-t` 设置页脚,`-l` 控制每页行数,`-w` 设置列宽。例如,`pr -h "标题" -t "页码:%d" -l 2 file.txt` 可以将文本文件格式化并添加定制的页眉页脚。结合其他命令使用能增强文本处理能力。记得测试输出,了解详细帮助可查阅`man pr`。