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のインストール

  1. cpanmとは?
  2. インストール方法

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);