<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title></title>
    <description></description>
    <link>http://agen-0502.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Perl学习总结</title>
        <author>agen_0502</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://agen-0502.javaeye.com">agen_0502</a>&nbsp;
          链接：<a href="http://agen-0502.javaeye.com/blog/225797" style="color:red;">http://agen-0502.javaeye.com/blog/225797</a>&nbsp;
          发表时间: 2008年08月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="color: red; font-size: small;">1    Perl基础学习总结</span>
</p>
<p><br />
<span style="color: #ff0000;">1.1  Perl的安装和环境变量</span>
<br />
       在装Linux系统时，Perl会自动被安装到你的系统中（默认）, 而我为了学习，不得不把自带的Perl安装程序卸载, 再从官方下载相关的源码安装，安装虽说简单，但我还是把安装遇到的问题跟大家分享一下:<br />
下载源码包后，将其解压, 大概操作如下:  <br />
&nbsp;&nbsp;&nbsp;
    # Tar &ndash;Zxvf  Perl-Xxx.Tar.Gz <br />
&nbsp;&nbsp;&nbsp;
    # Cd Perl-Xxx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      ./Configure <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Make <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Make Install<br />
&nbsp;&nbsp;
在Configure后面有很多的参数，如果不想安装在指定的路径下，可用-D加上Profix=/You/Path/<br />
其他参数的说明可用--Help参数查看. 具体的详细安装就要看README. 安装后要验证，用Perl &ndash;V命令，如果没有出错的话，就会显示在当前系统的Perl版本信息. 如果说未找到此命令,就要配置环境变量了，<br />
在/Etc/Profile文件的最后一行加上PATH=/You/Path/Bin:$PATH, 用Source 或重启系统就行了.</p>
<p><br />
<span style="color: #ff0000;"><span>1.2  Perl标量总结</span>
</span>
<br />
&nbsp;&nbsp;
       在Perl 里面，标量其实就是数字，字符串，简称为基本数据类型 , 其中数字又分为整型，浮点型；而字符串则是由单引号或双引号组成的. 对于这些整型和浮点型及字符串它们之间的操作，我这里就不多讲，举个很简单的例子给大家看看，把一个整数变成一个浮点点只需要乘以1或除以1，因为乘法或除法就是一种浮点操作。把数字变成字符串就更简单了。Printf &lsquo;%D/%D/%D&rsquo;,2008,07,27;  这个打印语句会显示<br />
2008-7-27	上面用%后加字母D，就叫数字格式化。具体请查相关文档.</p>
<p><br />
<span style="color: #ff0000;">1.3	Perl 操作符简单学习</span>
<br />
Perl的操作符相当之多，我把学习中遇到的一些常用的操作符跟大家分享。</p>
<p><br />
&nbsp;&nbsp;&nbsp;
        赋值操作符 &nbsp; &nbsp; &nbsp; &nbsp;         =                       <br />
&nbsp;&nbsp;&nbsp;
        算术操作符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         + &nbsp;  -&nbsp;  *&nbsp;  / &nbsp;  **&nbsp;   %<br />
&nbsp;&nbsp;&nbsp;
        字符串操作符 &nbsp; &nbsp; &nbsp;    .     X                                #点是连接操作符, X是复制操作符<br />
&nbsp;&nbsp;&nbsp;
        逻辑操作符 &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;         AND    OR  NOT    &amp;&amp;    ||    !<br />
&nbsp;&nbsp;&nbsp;
        组合赋值操作符&nbsp;&nbsp;&nbsp; +=&nbsp;  -=&nbsp; *=&nbsp; /=&nbsp; **=&nbsp; %=&nbsp;  ||=&nbsp;     &amp;&amp;=&nbsp;    X=&nbsp;   .=  <br />
&nbsp;&nbsp;&nbsp;
        递增和递减操作符         ++ &nbsp;    --<br />
&nbsp;&nbsp;&nbsp;
        比较操作符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         ==&nbsp;   !=&nbsp;     &gt;&nbsp;   &lt;&nbsp;   &lt;=&nbsp;    &gt;=&nbsp;   &lt;=&gt;&nbsp; eq&nbsp; ne&nbsp; gt&nbsp; lt &nbsp; le&nbsp; ge &nbsp; cmp</p>
<p><br />
        上面除了&lt;=&gt; Cmp外，其他全返回Ture 或Flase .  &lt;=&gt;和Cmp 返回三个值 1/0/-1<br />
&nbsp;&nbsp;
         绑定操作符       =~   !~<br />
&nbsp;&nbsp;
         关系操作符        =&gt;    #  在Hash中常用到<br />
&nbsp;&nbsp;
         范围操作符        ..       #  1..10     代表 1 2 3 4 5 6 7 8 9 10        <br />
&nbsp;&nbsp;
          三元操作符       ? :  <br />
上面就是一些常用到的操作符，当然这只是Perl当中的一小部分，还有很多的操作符由于缺乏经验，所以我也不知道。</p>
<p><br />
<br />
<span style="font-size: small;"><span style="color: red;">2	Perl 数组和Hash的总结
</span>
</span>
</p>
<p><br />
&nbsp;&nbsp;&nbsp;
数组其实就是列表的组合,而列表其实就是数据的集合,  如何定义数组，我用例子来说，大家看的会更明白一点. 首先数组用@来做前缀的，例如:  @Array=(1,2,3,4,5);     <br />
&nbsp;&nbsp;&nbsp;
用括号括起来 的就是一个列表，然后把它赋值给@Array这个数组, 可以通过数组下标来取数组元素，数组下标从0开始, 下面是一些操作数组的常用函数:</p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push  是往数组尾部添加一个元素，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop是往数组尾部删除一个元素，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
shift 是往数组首部添加一个元素，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unshift是往数组首部删除一个元素。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
splice函数是删除数组多个元素   <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
undef 是删除数组所有元素。还可以利用Reverse 和Sort对数组反转和排序. </p>
<p>&nbsp;&nbsp; 另外，获得数组的元素大小也有好几种方法:  $Size=@Array    $#Array+1   Scalar(@Array)  , 这里要解释一下$#Array+1 ，$#是取得当前数组最后一个元素的下标，所以要加1. 对数组的了解我就这么多，下面说说hash:<br />
定义hash要用%做前缀, hash是由键值组合的,在Perl 里面用&rdquo;=&gt;&rdquo;操作符来区分hash的键和值,  操作hash是一个很复杂的过程，我这里写一些比较简单的,hash操作函数:  </p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp; keys 是取hash中的key, 而values 函数是取hash中的value，在hash中，key必须是唯一的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;
each函数是返回hash中的key/value对，每次只返回一个键值对. <br />
&nbsp;&nbsp;&nbsp;&nbsp;
exists函数 判断hash是否存在某个键或值是否存在, 一般是判断key是否存在<br />
&nbsp;&nbsp;&nbsp;&nbsp;
undef 函数是删除一个键对应的值，而这个键会一直保存在hash中.<br />
&nbsp;&nbsp;&nbsp;&nbsp;
delete函数是整个删除key和value.<br />
&nbsp;&nbsp;
也可以使用前面提到的reverse函数把整个hash反转. 总之对hash要想深入了解，必须要多实践，看懂不代表会做，对hash我暂且也只了解这么一点。<br />
<br />
<span style="color: #ff0000; font-size: small;">3.	Perl 正则表达式</span>
<br />
正则表达式是Perl的特征之一，也相当复杂，我把学会的跟大家分享：<br />
&nbsp;&nbsp;
首先要说三个符号:     $  @ \ <br />
这三个字符如果转义的话，就会马上触发文本的插值操作. 还有一些特殊的字符，但由于比较多，就说几个常见的  \r  \n \t      分别是回车，换行，制表符.</p>
<p><br />
&nbsp;&nbsp;
要应用正则一般用//作为分隔符，当然还可以使用其他自己喜欢的字符做为分隔符, 使用绑定操作符&rdquo;=~&rdquo;可以拿左边的字符串和右边的模式匹配，正则表达式的操作符如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;
m//&nbsp;&nbsp;&nbsp;&nbsp;    匹配操作符<br />
&nbsp;&nbsp;&nbsp;&nbsp;
s//&nbsp;&nbsp;&nbsp;&nbsp;      替换操作符</p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp;
修饰符如下:<br />
&nbsp;&nbsp;&nbsp;&nbsp;
/i&nbsp;&nbsp;&nbsp;&nbsp;        忽略大小写<br />
&nbsp;&nbsp;&nbsp;&nbsp;
/g&nbsp;&nbsp;&nbsp;&nbsp;       匹配全局</p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp;
还有在匹配模式中的一些常用特殊符号: <br />
&nbsp;&nbsp;&nbsp;&nbsp;
?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 匹配零个或一个<br />
&nbsp;&nbsp;&nbsp;&nbsp;
*&nbsp;&nbsp; &nbsp; &nbsp;          匹配零个或多个<br />
&nbsp;&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;          匹配一个或多个<br />
对于正则表达式我就说这么多，因为内容实在太多了，我也只学了一点皮毛。</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://agen-0502.javaeye.com/blog/225797#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 08 Aug 2008 12:55:18 +0800</pubDate>
        <link>http://agen-0502.javaeye.com/blog/225797</link>
        <guid>http://agen-0502.javaeye.com/blog/225797</guid>
      </item>
  </channel>
</rss>