SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Excel出力のCSV取込みから学ぶ
4つのCPANモジュール
Hirobanex
2013-09-27@Perl Beginners#10
本LTの目的
1
- Encode
- Text::CSV
- Data::Recursive::Encode
- Data::Dumper::AutoEncode
Excelが出力CSVをPerlで扱うことを通して
以下のモジュールの使い方を学ぶ
※エディタのデフォルト文字コードはutf8前提です
第一章~文字化け編~
2
取り込むCSVサンプル
3
なんとなく書いたダメなコード
4
動かしてみる
5
Cd /home/hirobanex/tmp/csv
perl ./bad-sample.pl
動かしてみる
6
モジばけ・・・
バグじゃね???
動かしてみる
7
モジばけ・・・
バグじゃね???
文字コードの取扱いの間違
い
Perlにおける文字コードの取扱い
8
Encodeモジュールなどを使って入力時にdecodeでPerlの内部
文字列に変換し、出力時にencodeで特定の文字コードに変換
する
utf8
euc-jp
shift-jis
cp932
use Encode;
use utf8;
open my $fh, ’<’, “./sample.txt”;
my @data = $fh;
for my $row (@data) {
$row = decode(‘xxx’,$row);
my $len = length($row);
print encode(‘utf8’,$row).”t”.$len;
}
utf8
euc-jp
shift-jis
cp932
Perl内部Excel
なぜ特定の文字コードではダメか
- Text::Mecab
- DBIx::Skinny,Teng
- TemplateToolkit,Text::Xslate
- Web::Scraper
- Text::Markdown
- etc
ほぼすべてのCPANモジュールが文字列を扱う際に、Perl内部
文字列を前提にしているため
改めて直して動かしてみる
10
Cd /home/hirobanex/tmp/csv
perl ./used_encode.pl
改めて直して動かしてみる
11
やった!!!
第二章~フリーズ編~
12
取り込むCSVサンプル
13
CSVサンプルをエディタでみると
14
ダブルコーテー
ションとかあって
途中で改行され
ちゃっている
こんなん初めてのPerlに載ってない
!
15
どうやって取り扱えばよくわからず
完全にフリーズ!!!!
ググる
16
Text::CSV
17
Perlでいい感じにCSVファイル取り扱えるモジュール
初心者の壁
18
英語もりもりだし、メソッド多いし、
なんかCPANの見方がそもそもよくわからん
そのためのブログや勉強会
19
サンプルコード
動かしてみる
20
Cd /home/hirobanex/tmp/csv
perl ./used_text-csv.pl
Sampleコードの解説
21
日本語文字列を扱う時
に必須のオプション
Sampleコードの解説
22
CSVのカラムをハッ
シュにキーに指定
Sampleコードの解説
23
エンコーディング指定
Sampleコードの解説
24
ファイルハンドルから
ハッシュリファレンス
に変換
Sampleコードの解説
25
リファレス内のデータ
を一括encode
第二章~やる気を出して編~
26
ループでデータ確認するのだるい
27
Data::Dumperがあった!!
28
Data::Dumperの出力結果
29
日本語が変に
なっている!!
Data::Dumper::AutoEncodeが楽
30
Data::Dumper::AutoEncode出力結果
31
みやすい!!
今日のまとめ
32
CPANの便利なモジュールを使うと開発が楽になる!!!
モジュール名 概要
Encode 文字コードを扱う
Text::CSV CSVファイルを扱う
Data::Recursive::Encode
リファレンスの文字
コードを扱うのに便利
Data::Dumper::AutoEnco
de
日本語文字列のDump
に便利

Weitere ähnliche Inhalte

Was ist angesagt?

はりぼて OS で ELF なアプリを起動してみた
はりぼて OS で ELF なアプリを起動してみたはりぼて OS で ELF なアプリを起動してみた
はりぼて OS で ELF なアプリを起動してみたuchan_nos
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1信之 岩永
 
プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版信之 岩永
 
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflowionis111
 
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料Junichi Ishida
 
Rのコードをキレイに見せたい
Rのコードをキレイに見せたいRのコードをキレイに見せたい
Rのコードをキレイに見せたいmangantempy
 
C# 9 のおすすめ新機能
C# 9 のおすすめ新機能C# 9 のおすすめ新機能
C# 9 のおすすめ新機能m ishizaki
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること信之 岩永
 
20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造do_aki
 
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)信之 岩永
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 
第1回勉強会スライド
第1回勉強会スライド第1回勉強会スライド
第1回勉強会スライドkoturn 0;
 
第2回勉強会スライド
第2回勉強会スライド第2回勉強会スライド
第2回勉強会スライドkoturn 0;
 
php7's ast
php7's astphp7's ast
php7's astdo_aki
 
TwitterのStreaming ApiをPhpから使う
TwitterのStreaming ApiをPhpから使うTwitterのStreaming ApiをPhpから使う
TwitterのStreaming ApiをPhpから使うHidenori Goto
 
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)do_aki
 

Was ist angesagt? (20)

はりぼて OS で ELF なアプリを起動してみた
はりぼて OS で ELF なアプリを起動してみたはりぼて OS で ELF なアプリを起動してみた
はりぼて OS で ELF なアプリを起動してみた
 
getstartedc#_1
getstartedc#_1getstartedc#_1
getstartedc#_1
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版
 
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
 
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料
 
Rのコードをキレイに見せたい
Rのコードをキレイに見せたいRのコードをキレイに見せたい
Rのコードをキレイに見せたい
 
C# 9 のおすすめ新機能
C# 9 のおすすめ新機能C# 9 のおすすめ新機能
C# 9 のおすすめ新機能
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
 
Perl io layer
Perl io layerPerl io layer
Perl io layer
 
20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造
 
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)
 
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
 
NanoA
NanoANanoA
NanoA
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
第1回勉強会スライド
第1回勉強会スライド第1回勉強会スライド
第1回勉強会スライド
 
第2回勉強会スライド
第2回勉強会スライド第2回勉強会スライド
第2回勉強会スライド
 
php7's ast
php7's astphp7's ast
php7's ast
 
TwitterのStreaming ApiをPhpから使う
TwitterのStreaming ApiをPhpから使うTwitterのStreaming ApiをPhpから使う
TwitterのStreaming ApiをPhpから使う
 
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)
 

Ähnlich wie Excel出力のCSV取込みから学ぶ4つのCPANモジュール

Inner world of Perl::Lint
Inner world of Perl::LintInner world of Perl::Lint
Inner world of Perl::Lintmoznion
 
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~諒一 上野
 
初めてのPerl
初めてのPerl初めてのPerl
初めてのPerlarvelt s
 
レガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合うレガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合うYuta Ohashi
 
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会Yoshihisa Ozaki
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトuchan_nos
 
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話simotin13 Miyazaki
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Kazuhiko Kato
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワークTakuya Sato
 
Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?m ishizaki
 
第1回SE勉強会(080302)
第1回SE勉強会(080302)第1回SE勉強会(080302)
第1回SE勉強会(080302)柴田 篤志
 
Intellij idea for php
Intellij idea for phpIntellij idea for php
Intellij idea for phpKazuhiko Uno
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと信之 岩永
 
Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiJavaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiKen'ichi Sakiyama
 
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門sandai
 
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)7shi
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情Junichi Ishida
 

Ähnlich wie Excel出力のCSV取込みから学ぶ4つのCPANモジュール (20)

node-perl
node-perlnode-perl
node-perl
 
Inner world of Perl::Lint
Inner world of Perl::LintInner world of Perl::Lint
Inner world of Perl::Lint
 
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
 
初めてのPerl
初めてのPerl初めてのPerl
初めてのPerl
 
レガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合うレガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合う
 
Lingua::EN::Fathom
Lingua::EN::FathomLingua::EN::Fathom
Lingua::EN::Fathom
 
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
 
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワーク
 
Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?
 
第1回SE勉強会(080302)
第1回SE勉強会(080302)第1回SE勉強会(080302)
第1回SE勉強会(080302)
 
Intellij idea for php
Intellij idea for phpIntellij idea for php
Intellij idea for php
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと
 
Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiJavaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapi
 
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
 
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 

Excel出力のCSV取込みから学ぶ4つのCPANモジュール