ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          1.split函數(shù)

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

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

          3.unpack("C*")也可以逐個(gè)處理字符:(這個(gè)例子是累加字符串里每個(gè)字符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); #這個(gè)方法比上面更快,這個(gè)返回32位的checksum值.

          4 .<>是默認(rèn)的輸入流,其實(shí)就是ARGV.
          ?????這個(gè)模擬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

          一個(gè)詳細(xì)的例子:



          #!/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第一個(gè)變量和長度減一。 $| = 1; #不為0就強(qiáng)行清空輸出或打印。 while (<>) { #<>為@ARGV指定的文件句柄 for (split(//)) { print; select(undef,undef,undef, 0.005 * $DELAY); #select函數(shù)設(shè)置屏幕輸出。這里是設(shè)置延遲。 } }












          posted on 2006-04-09 11:16 ivaneeo 閱讀(405) 評論(0)  編輯  收藏 所屬分類: perl-殺雞就要用牛刀
          主站蜘蛛池模板: 莱阳市| 玉门市| 都安| 淮北市| 呼和浩特市| 临猗县| 广水市| 公主岭市| 休宁县| 淮滨县| 黔西县| 昆山市| 宜宾县| 甘孜| 黄龙县| 介休市| 乐亭县| 长海县| 乌拉特中旗| 阿尔山市| 元氏县| 马关县| 大方县| 丰城市| 诸城市| 焉耆| 石屏县| 漳浦县| 农安县| 儋州市| 平邑县| 沙河市| 祁门县| 大足县| 侯马市| 江源县| 南丰县| 遵义县| 江孜县| 温宿县| 双牌县|