Spreadsheet::ParseExcel
Spreadsheet::ParseExcel - search.cpan.org
エクセルの中身を開いて確認とか出来てかなり便利。
use Spreadsheet::ParseExcel; use Spreadsheet::ParseExcel::FmtJapan; my $excel = Spreadsheet::ParseExcel->new; my $format = Spreadsheet::ParseExcel::FmtJapan->new(Code => 'sjis'); my $workbook = $excel->Parse($excel_file,$format); ワークシートのオブジェクトを配列で返してくれる。 my @work_sheets = $workbook->worksheets(); my $worksheet = $workbook->worksheet(0); my ($min_gyou,$max_gyou ) = $worksheet->row_range(); $line_infos{$gyou}{VERSION} = $worksheet->get_cell($gyou, 0)
Perl入学式 #2 復習問題 score.pl
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $papix = { name => 'papix', affiliation => 'namba.pm', perl => 60, python => 50, ruby => 50, php => 80, binary => 30, }; my $boolfool = { name => 'boolfool', affiliation => 'namba.pm', perl => 40, python => 10, ruby => 20, php => 30, binary => 10, }; my $moznion = { name => 'moznion', affiliation => 'hachioji.pm', perl => 100, python => 70, ruby => 80, php => 50, binary => 50, }; my $binarian = { name => 'binarian', affiliation => 'hachioji.pm', perl => 10, python => 11, ruby => 1, php => 100, binary => 100, }; my $uzulla = { name => 'uzulla', affiliation => 'hachioji.pm', perl => 1, python => 0.01, ruby => 0.5, php => 4, binary => 0.01, }; my @name = ($papix,$boolfool,$moznion,$binarian,$uzulla); my @lang = ('perl','python','ruby','php','binary'); my $sum_perl=0; my $sum_python=0; my $sum_ruby=0; my $sum_php=0; my $sum_bin=0; for my $name (@name){ # print Dumper $name->{perl}; $sum_perl = $sum_perl + $name->{perl}; $sum_python = $sum_python + $name->{python}; $sum_ruby = $sum_ruby + $name->{ruby}; $sum_php = $sum_php + $name->{php}; $sum_bin = $sum_bin + $name->{binary}; } print "$sum_perl\n"; print "$sum_python\n"; print "$sum_ruby\n"; print "$sum_php\n"; print "$sum_bin\n"; for my $name (@name){ print "-----------------------\n"; print "$name->{name}:\n"; for my $lang (@lang){ print "$lang:"; for my $num (1..$name->{$lang}/20){ print '★'; }; print "\n"; }; }; # 4.所属ごとのperlのスコアが60以上の人の名前を格納する my $highscore={}; my $tmp=0; for my $name (@name){ for my $lang (@lang){ #print $name->{$lang}; if($name->{$lang} >= 60 ){ push @{$highscore->{$lang}},$name->{name}; } }; }; print "---------------------------------------------\n"; for my $lang (@lang){ print "$lang- @{$highscore->{$lang}}\n"; }
Perl入学式 #2 復習問題 vote.pl
#!/usr/bin/perl use strict; use warnings; use Data::Dumper my $info1 = { name => 'tarou', favorite_food => ['banana','banana','banana']}; my $info2 = { name => 'jirou', favorite_food => ['banana','mikan','kakuni']}; my $info3 = { name => 'saburo', favorite_food => ['banana','orange','aaa']}; my @array = ($info1,$info2,$info3); my @array2; # みんなの好きな食べ物を配列に突っ込んでる for my $line ( @array){ push(@array2,@{$line->{favorite_food}}); } my %cnt; foreach my $food (@array2){ if($cnt{$food}) { $cnt{$food}=$cnt{$food}+1; } else { $cnt{$food}=1; } } #カウントした回数(値)をキーとともに出力 foreach my $key (sort(keys(%cnt))){ print "$cnt{$key} $key\n"; }
cpanmのインストール
- cpanmとは?
- インストール方法
1.cpanmとは?
cpanmとは、Perlモジュールをインストール(モジュールの取得、解凍、ビルド、インストール)するコマンド。
2.インストール方法
[root@localhost ~]# cpan App::cpanminus
Perlで日本語
・Perlで日本語を使用するときの三原則
原則1:外部から入力された文字列はデコードして内部文字列に変換する
# 文字コードはバイト文字列がどの文字コードで記述されているかを知らせるもの
内部文字列 = decode(文字コード,バイト文字列);
use Encode 'decode';
# コマンドライン引数(外部からの入力)
my $byte_str = shift;
# UTF-8バイト文字列を内部文字列に変換
my $internal_str = decode('UTF-8',$byte_str);
原則2:外部へ出力する文字列はデコードしてバイト文字列に変換する
バイト文字列 = encode(文字コード,内部文字列);
use Encode 'decode';
# 内部文字列をUTF-8バイト文字列に変換
my $byte_str = encode('UTF-8',$internal_str);
原則3:ソースコードはUTF-8で保存し、utf8プラグマを有効にする
UTF-8文字列リテラルを内部文字列に変換
use Encode 'decode'
my $byte_str = 'あいうえお';
my $internal_str = decode('UTF-8',$byte_str);