Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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で扱うことを通して
以下のモジュールの使い方を...
第一章~文字化け編~
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 ...
なぜ特定の文字コードではダメか
- Text::Mecab
- DBIx::Skinny,Teng
- TemplateToolkit,Text::Xslate
- Web::Scraper
- Text::Markdown
- etc
ほぼす...
改めて直して動かしてみる
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
リファレンスの文字
コード...
Upcoming SlideShare
Loading in …5
×

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

2,244 views

Published on

http://www.perl-beginners.org/2013/09/perl-beginners-10.html

  • Be the first to comment

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

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

×