■Perlメモ


Perlでタブ区切りのテキストを読み込む


基本的に読み込んでタブでSplitするだけ。

### check arg
if(($#ARGV + 1) == 0 ){
  print "Please input filename\n"; exit(1);
}

# open the file
open my $FIN,"<:utf8",$ARGV[0] || die;
my @line = <$FIN>;
close($FIN);
foreach my $val (@line){ $val =~ s/\n//g; }

### push to the array
my @temp;
my @array2D;

foreach my $val (@line){
  @temp = split(/\t/, $val);
  push(@array2D, [@temp] );
}

### print
for(my $i=0;$i<=$#array2D;$i++){
  print $i,": ";
  for(my $j=0;$j <= $#{$array2D[$i]};$j++){
    print $array2D[$i][$j],",";
  }
  print "\n";
}

結構便利。文字コードによっては\r\nを削除すると吉。


RSSからURL

スニペットみたいなやつ(<description>)は普通のRSSリーダーに任せて、URLのみを抽出する。
XML::RSSモジュールを使用。

#!/usr/bin/perl -w

use strict;
use utf8;

use LWP::Simple;
use XML::RSS;

#my $url = 'http://www6.atwiki.jp/mffukui/rss10.xml';
#my $data = get($url);
#print $data,"\n";

my $rss = new XML::RSS;
$rss->parsefile('rss10.xml');
#print $parse,"\n";

my $channel = $rss->{'channel'};

print "title=$channel->{'title'}\n";
foreach my $val ( @{$rss->{'items'}} ){
    print $val->{'link'},"\n";
}


タグの中身はハッシュに格納されてるみたい。


macで改行コード変換

perl -pe 's/\r/\n/g' index.html > a.html 


バイナリデータの読み込み


#!/usr/bin/perl -w


use strict;
use utf8;


open FIN,'<', $ARGV[0] , or die "file open error: $!";
binmode FIN;

my $val;

### skip for offset
my $offset = 8;
read(FIN, $val, $offset );

#read(FIN, $val, 4);
#print unpack("H*", $val)," ";

#$val = unpack("I*", $val);
#printf "%d ", $val;
#printf "%x ", $val;

### get RGB
while( read(FIN, $val, 4) ){
    $val = unpack("I*", $val);

    my $R = ($val>>24)&0xFF;
    printf "R=%x ", $R;

    my $G = ($val>>16)&0xFF;
    printf "G=%x ", $G;

    my $B = ($val>>8)&0xFF;
    printf "B=%x ", $B;

}


### swap
#while( read(FIN, $val, 4) ){
#    $val = unpack("I*", $val);
#
#    my $val2 =(	($val>>24)&0xFF) << 0  |
#	      (	($val>>16)&0xFF) << 8  |
#	      (	($val>>8 )&0xFF) << 16 |
#	      (	($val>>0 )&0xFF) << 24 ;
#
#    printf "%x ", $val2;
#
#    
#
#}

### read 1byte
#while( read(FIN, $val, 4) ){
#    print unpack("h*",$val), " ";
#}


close FIN;

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2010年05月04日 18:30