第2章----perl列表与数组.pptVIP

  • 2
  • 0
  • 约8.28千字
  • 约 45页
  • 2019-08-22 发布于福建
  • 举报
2.6.3 sort 操作 sort 操作将输入的一串列表(可能是数组)根据内部的字符顺序进行排序。如对于 ASCII 字符串,将根据 ASCII 序进行排序。 @rocks = qw/ bedrock slate rubble granite /; @sorted= sort(@rocks); #得到 bedrock, granite, rubble, slate @back = reverse sort @rocks; # 为 slate 到 bedrock @rocks = sort @rocks; #将排序的值写回@rocks @numbers = sort 97 ..102; #得到 100,101,102,97,98,99 如果将数字按照字符串进行排序可能得到没有意义的结果。当然,默认的排序规则下,任何由1 开头的字符串先于由 9 开头的字符串。 如果想将某个数组排序,那必须将排序之后的结果存回数组中。 2.7 标量和列表上下文 一个给定的表达式在不同的上下文中其含义是不同的。 上下文是指表达式存在的地方。当 Perl 解析表达式时,它通常期望一个标量值或者列表值,称为表达式的上下文环境。 42 + something #something 必须是标量 sort something #something 必须是列表 Perl 中的表达式将根据其 context 返回适当的值。例如,一个数组的 “name”,在列表 context 中,它返回列表元素;在标量 context 中, 它返回数组元素个数: 当然这个列表可能只包含一个元素。也可能为空,或者包含任意数量的元素。 数组@people 的真实名字是 people。@只是一个限定词(qualifier)。 @people = qw( fred barney betty ); @sorted = sort @people; #列表 context:barney , betty, fred $number = 42 + @people; #标量 context:42+3,得到 45 甚至普通的赋值(赋给标量或者列表)也产生不同的 contexts: @list = @people; #3 个 People 的列表 $n = @people ; #数字 3 2.7.1 在标量 Context 中使用 List-Producing 表达式 一些表达式根本没有标量 context 的值。例如,sort 在标量 context 中返回什么?不需要排序一个列表来得到其个数,因此,除非有人按另一种方式实现了 sort,否则其在标量 context 中返回 undef。 在列表 context 中, reverse 返回反转的列表。在标量 context 中,返回反转的字符串(或者将反转的结果串成一个字符串): @backwards = reverse qw / yabba dabba doo /; #返回 doo, dabba, yabba $backwards = reverse qw/ yabba dabba doo /; #返回 oodabbadabbay $fred = something; # 标量 context @pebbles = something; #列表 context ($wilma,$betty) = something; #列表 context ($dino) = something; #列表 context 最后一个是列表 context 而非标量 context。括号是必须的,它使第四个区别于第一个。 标量 context $fred = something; $fred[3] = something; 123 + something; something + 654 if(something){ … } $fred[something] = something; 列表 context @fred = something; ($fred, $barney) = something; ($fred) = something; push @fred, something; foreach $fred(something) sort something reverse something print something 2.7.2 在列表 Context 中使用 Scalar-Producing 表达式 如果一个表达式不是列表值,则标量值自动转换为一个元素的列表: @fred = 6*7; @barney = “hello” . ‘ ’ . “world”; 由于 undef 是一个标量值,将 undef 赋给数组不会清

文档评论(0)

1亿VIP精品文档

相关文档