ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          1.split函數

          ???%seen = ( );
          ???$string = "an apple a day";
          ???foreach $char (split //, $string) {
          ???????$seen{$char}++;
          ???}

          2./(.)/g 但是(.)永遠不會是newline
          ???%seen = ( );
          ???$string = "an apple a day";
          ???while ($string =~ /(.)/g) {
          ???????$seen{$1}++;
          ???}

          3.unpack("C*")也可以逐個處理字符:(這個例子是累加字符串里每個字符ascii碼的累加值)
          ???$sum = 0;
          ???foreach $byteval (unpack("C*", $string)) {
          ???????$sum += $byteval;
          ???}
          ???print "sum is $sum\n";
          ???# prints "1248" if $string was "an apple a day"

          $sum = unpack("%32C*", $string); #這個方法比上面更快,這個返回32位的checksum值.

          4 .<>是默認的輸入流,其實就是ARGV.
          ?????這個模擬sysv的checksum程序:
          ???#!/usr/bin/perl
          ???# sum - compute 16-bit checksum of all input files
          ???$checksum = 0;
          ???while (<>) { $checksum += unpack("%16C*", $_) }
          ???$checksum %= (2 ** 16) - 1;
          ???print "$checksum\n";
          ???

          ???Here's an example of its use:

          ???% perl sum /etc/termcap
          ???1510


          ???If you have the GNU version of sum, you'll need to call it with the —sysv option to get the same answer on the same file.

          ???% sum --sysv /etc/termcap
          ???1510 851 /etc/termcap

          一個詳細的例子:



          #!/usr/bin/perl # slowcat - emulate a s l o w line printer # usage: slowcat [-DELAY] [files ...] $DELAY = ($ARGV[0] =~ /^-([.\d]+)/) ? (shift, $1) : 1; #這里[.]取消了.的特殊性。使其為一般意義。shift移除了@ARGV第一個變量和長度減一。 $| = 1; #不為0就強行清空輸出或打印。 while (<>) { #<>為@ARGV指定的文件句柄 for (split(//)) { print; select(undef,undef,undef, 0.005 * $DELAY); #select函數設置屏幕輸出。這里是設置延遲。 } }












          posted on 2006-04-09 11:16 ivaneeo 閱讀(400) 評論(0)  編輯  收藏 所屬分類: perl-殺雞就要用牛刀
          主站蜘蛛池模板: 绵竹市| 灌阳县| 蒙自县| 平陆县| 嘉善县| 化德县| 买车| 普宁市| 五家渠市| 定结县| 抚顺市| 榆中县| 山东省| 六枝特区| 贡山| 都安| 克山县| 安乡县| 灵武市| 湖北省| 绥江县| 盐池县| 乡城县| 黔西县| 钦州市| 海南省| 镇雄县| 巨野县| 吉首市| 河池市| 连州市| 得荣县| 浮梁县| 二手房| 汤阴县| 汉阴县| 嵊州市| 天柱县| 永年县| 彭州市| 博野县|