■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;
最終更新:2010年05月04日 18:30