<?xml version="1.0" encoding="gbk"?>
<rss version="2.0">
  <channel>
    <title>曲径通幽论坛 - 『Perl』</title>
    <link>http://www.groad.net/bbs/forum.php?mod=forumdisplay&amp;fid=114</link>
    <description>Latest 20 threads of 『Perl』</description>
    <copyright>Copyright(C) 曲径通幽论坛</copyright>
    <generator>Discuz! Board by Comsenz Inc.</generator>
    <lastBuildDate>Sun, 03 May 2026 01:25:32 +0000</lastBuildDate>
    <ttl>60</ttl>
    <image>
      <url>http://www.groad.net/bbs/static/image/common/logo_88_31.gif</url>
      <title>曲径通幽论坛</title>
      <link>http://www.groad.net/bbs/</link>
    </image>
    <item>
      <title>命令行参数之 -F -- 指定分隔符</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=7307</link>
      <description><![CDATA[和 awk 的 -F 选项一样，Perl 也可用该选项来指定分隔符。

供测试文本内容：

运行下面命令：

上面命令，\\W 表示非单字匹配，等效于 [^A-Za-z_0-9] ，该选项和 -a  搭配起来用，意思就是说，-a  会根据内容中的有规律的非单字字符进行自动分隔，比如下面一个文本：

 ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Thu, 19 Jul 2012 07:32:42 +0000</pubDate>
    </item>
    <item>
      <title>命令行参数之 -a 选项和 @F 数组</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=7306</link>
      <description><![CDATA[-a 选项与 -n  或者-p  选项一起使用，负责打开自动拆分模式，用于对空白字符进行隐式拆分，并将字段放入数组 @F 中.

供测试用文本内容为：


运行下面的命令：

命令中，split 是一个函数，如果省略掉所有的参数后，它默认用空白来分割每行中的内容。

下面使用 -a 和 ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Thu, 19 Jul 2012 03:50:01 +0000</pubDate>
    </item>
    <item>
      <title>命令行参数之 BEGIN 与 END</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=7305</link>
      <description><![CDATA[和 AWK  一样，Perl 也可以在命令行上指定 BEGIN 与 END 。

供测试文本内容如下：

运行输出：

在上面的命令中，分别使用了 BEGIN 和 END ，BEGIN 里的代码在处理命令前执行；END 里的代码在处理完命令后执行。

在命令里，\\w  是单词字符匹配，]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Thu, 19 Jul 2012 02:32:39 +0000</pubDate>
    </item>
    <item>
      <title>命令行参数之 -p 选项 -- 循环执行命令(强制打印)</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=7304</link>
      <description><![CDATA[-p 选项和 -n  选项的功能类似，但是它还提供了个强制打印的功能，它的作用是如下代码的缩写：
[code=perl]LINE:
    while () {
      # your code goes here
    } continue {
      print or die \&quot;-p destination: $!\\n\&quot;;
    }[/mw_shl_code]
上面代码中，LINE 是该 ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Wed, 18 Jul 2012 14:32:02 +0000</pubDate>
    </item>
    <item>
      <title>循环控制 -- continue 代码块</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=7302</link>
      <description><![CDATA[continue 代码块也属于循环控制的一部分。它一般位于 while 循环的后面，它提供了类似于 for 循环的变量递增效果，即使在使用 next  语句时也无法阻止它的执行，考虑下面的代码：
[code=perl]#!/usr/bin/perl
use strict;
use warnings;

my $i = 1;

while ($i]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Wed, 18 Jul 2012 11:20:30 +0000</pubDate>
    </item>
    <item>
      <title>命令行参数之 -n 选项 -- 循环执行命令</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=7299</link>
      <description><![CDATA[在命令行上，给出 -n 选项，可以让你循环的执行 -e 所指定的命令，它等效于下面的代码：
[code=perl]LINE:
while () {
&#160;&#160;&#160;&#160;&#160;&#160;# 你的代码
 }[/mw_shl_code]
在 while 中， 表示来自标准输入，每次读入的一行数据会存储在变量 $_ 中。LINE  ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Wed, 18 Jul 2012 08:10:07 +0000</pubDate>
    </item>
    <item>
      <title>$. -- 当前行号</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=7298</link>
      <description><![CDATA[$. 是个预定义变量，表示当前行号。

测试文本：


希望在输出时给每行添加一个行号，那么可以如下运行命令：

在命令中 -e 选项后接 perl 执行语句。-n 选项表示循环从标准输入读入。]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Wed, 18 Jul 2012 08:00:59 +0000</pubDate>
    </item>
    <item>
      <title>命令行参数之 -e 选项 -- 执行命令</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=7293</link>
      <description><![CDATA[有时候，如果只是完成一些简单的任务，就不需要把代码都写到一个文件里，而是和其它 shell 命令一样，放在命令行中。对于 perl 命令，-e 选项可用来指定要执行的命令，比如：

可以在命令行上指定多条命令，这时需要同时使用多个 -e 选项，每个 -e 选项后面接一条命令， ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Mon, 16 Jul 2012 02:59:20 +0000</pubDate>
    </item>
    <item>
      <title>闭包与对象</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=5137</link>
      <description><![CDATA[操作对象，普通的方法是返回对象的一个引用，而我们一拿到这个引用就可以直接的修改对象中的数据，即使我们在模块中提供了操作对象的方法，但只要用户不愿意，那么也就无法阻止它们直接访问对象中的数据。如下图所示：

 
 
Perl 并没有为类数据提供专门的私有区域(priv ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Tue, 01 Nov 2011 17:24:55 +0000</pubDate>
    </item>
    <item>
      <title>&quot;Can&#39;t call method xxxx on unblessed reference at&quot; 错误</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=5132</link>
      <description><![CDATA[当使用了一个非对象的引用来使用方法时，会提示 \&quot;Can\'t call method xxxx on unblessed reference at\&quot; 的错误，比如：
[code=perl]#!/usr/bin/perl


use strict;
use warnings;


my $ref = {
                a =&gt; \&quot;hello\&quot;,
                b =&gt; \&quot;world\&quot;,
};


$ref- ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Tue, 01 Nov 2011 04:00:33 +0000</pubDate>
    </item>
    <item>
      <title>析构函数(DESTROY 方法)</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=5128</link>
      <description><![CDATA[Perl 维护了对象的引用信息，在这些引用计数为 0 时会自动销毁对象，当然在程序退出时，所有的对象都将销毁。

Perl 提供了 DESTROY 方法，它允许我们在对象被销毁前利用该即将被销毁的对象做点什么。

自定义一个名为 Employee.pm 的模块，里面代码为：
[code=perl]pac ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Mon, 31 Oct 2011 09:57:16 +0000</pubDate>
    </item>
    <item>
      <title>:: 和 -&gt; 符号的比较</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=5124</link>
      <description><![CDATA[箭头 -&gt; 符号一般用在具有多态性，动态绑定和继承行为的面向对象的编程中。虽然在很多情况下也可以用 :: 语法来代替，但它却比较不灵活，在一些情况下如果不用条件语句进行判断，那么还会带来问题。

下面的示例展示了 :: 语法的缺点，如果使用 -&gt; 面向对象的语法，则不 ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Mon, 31 Oct 2011 06:16:48 +0000</pubDate>
    </item>
    <item>
      <title>构造模块与类的方法</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=5104</link>
      <description><![CDATA[正如其他面向对象的语言一样，一个类总有他自己的一套方法，通过这些方法来操作这个类的对象。实际上，类的方法也就是一些子函数，或称为子例程。但是它们和普通的子例程有所不同，类方法总是隐含传递第一个参数，该参数可以是类名，也可能是指向对象的引用。比如，你显 ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Sat, 29 Oct 2011 11:30:05 +0000</pubDate>
    </item>
    <item>
      <title>类，包，对象，bless 函数</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=5102</link>
      <description><![CDATA[Perl 中，类(class) 就是一种包 (package)，这两个术语可以互换。
 
类一般位于 .pm 模块中，类名和模块名也相同，比如一个模块名为 mywife.pm ，那么类的名字就是 mywife 。类一般由下面几个部分组成：
 
1. 描述对象的数据
2. 一个名为 \&quot;bless\&quot; 的函数，它用来创建对 ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Sat, 29 Oct 2011 03:11:24 +0000</pubDate>
    </item>
    <item>
      <title>闭包</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=5098</link>
      <description><![CDATA[闭包是指“一个带有数据(attitude)的匿名子例程(匿名子函数)，也可以称作”inside-out objects\&quot;。

对象是附有子例程的数据，而闭包则是附带有一些数据的子例程。

在 Perl 中，对象简单的说就是一个散列表，而散列表正是一些数据，而操作一个对象则需要用它所从属的包( ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Fri, 28 Oct 2011 06:46:09 +0000</pubDate>
    </item>
    <item>
      <title>子例程和句柄的引用</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=5068</link>
      <description><![CDATA[匿名子例程
在 sub 关键字后省略掉子例程的名字，那么就是一个匿名子例程，注意匿名子例程的函数体后面要以一个分号结尾。下面例子简单演示引用一个匿名子例程：
[code=perl]#!/usr/bin/perl

my $subref = sub { print @_; };

&amp;$subref(\'a\', \'b\', \'c\');
print \&quot;\\n\&quot;;
[ ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Tue, 25 Oct 2011 07:00:49 +0000</pubDate>
    </item>
    <item>
      <title>嵌套数据结构及引用</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=5066</link>
      <description><![CDATA[可以利用指向匿名数据结构的指针形成对更复杂的数据结构进行访问。比如，散列中嵌套散列，散列中嵌套数组，数组中嵌套散列等等。

下面的示例代码演示了这些情况。

1. 列表的列表
列表中可以含有其他列表或列表的集合，该模式可以用来创建多为数组。如下面代码所示：
[ ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Tue, 25 Oct 2011 04:19:22 +0000</pubDate>
    </item>
    <item>
      <title>匿名变量，匿名数组，匿名散列及其引用</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=5062</link>
      <description><![CDATA[如果一个变量或子例程没有名字，那么它就是匿名的(anonymous)。如果把一个匿名变量(或子例程)复制给标量，那么这个标量就是对该变量(子例程)的引用。

匿名数组的元素放在方括号 ([ ]) 中。

测试代码：
[code=perl]#!/usr/bin/perl


my $arrayref = [ \'Tony\', \'Jasmin ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Mon, 24 Oct 2011 17:22:12 +0000</pubDate>
    </item>
    <item>
      <title>DATA 文件句柄</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=5061</link>
      <description><![CDATA[句柄用来从标准输入接收数据，而  文件句柄则可以从执行它的统一脚本中直接获取数据，而不是从命令行中或者是从另一个文件里获取。

 所读的数据保存在每个脚本末尾的特殊常量 __DATA__ 之后。__DATA__ 也同时标志了脚本的逻辑结束。每当从读取  一行内容后，这些内容就 ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Mon, 24 Oct 2011 13:24:59 +0000</pubDate>
    </item>
    <item>
      <title>使用 require 导入库文件</title>
      <link>http://www.groad.net/bbs/forum.php?mod=viewthread&amp;tid=5059</link>
      <description><![CDATA[require 可以导入 Perl 库，然后便可执行其中的例程或代码，它类似于 C 语言中的 #include 。
 
标准 Perl 库提供了许多 Perl 4 时编写的许多 .pl 库，它们由包含在其中的子例程组成，比如你可以查看 /usr/share/perl5/pwd.pl 这个文件，该文件包含了两个子例程，其中一 ...]]></description>
      <category>『Perl』</category>
      <author>beyes</author>
      <pubDate>Mon, 24 Oct 2011 09:17:14 +0000</pubDate>
    </item>
  </channel>
</rss>