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 閱讀(405) 評論(0)  編輯  收藏 所屬分類: perl-殺雞就要用牛刀
          主站蜘蛛池模板: 肥东县| 南投县| 潮安县| 集安市| 贵南县| 海宁市| 乐东| 康平县| 永兴县| 镇安县| 吉林市| 定远县| 邵阳县| 湖北省| 嘉峪关市| 祁连县| 剑阁县| 聂拉木县| 乌鲁木齐县| 胶州市| 霍邱县| 长乐市| 朝阳区| 横山县| 隆昌县| 随州市| 左权县| 育儿| 临城县| 唐海县| 灌阳县| 连江县| 蓬溪县| 北安市| 应用必备| 兴海县| 科尔| 平武县| 镇远县| 潞城市| 清徐县|