初めてのPerl@Arvelt
自己紹介名前:****twitter:@Arvelt        はてなID:arveltブログ:arveltの技術メモ仕事:  SIerで客先常駐。たまに違う現場へ。  Java、COBOL、(ASP.NET、VB.NET)最近興味あること...
初めてのPerl1.Perlを使ってみた。  1-1.CSVファイルを読みこむ。  1-2.ディレクトリの一覧を表示する。  1-3.ファイルをFTP経由でアップロードする。  1-4.Excelファイルを読み込む。2.まとめ
1.Perlを使ってみたとある環境Windows7 Perofessional 32bitActivePerlをダウンロードして、インストール>Perl --versionThis is perl 5, version 14>perl -e "...
1-1.CSVの読み込みtypeperfコマンドで吐き出したCSVファイル。これを読み込んで、直近15秒くらいの平均を計算。負荷を判定しようとした。
1-1.コード例open(IN, perform.csv );while(<IN>){    #改行除去、カンマ区切りで配列へ    chomp ($_);    my @data = split(/,/, $_);    #クォーテーション除...
1-1.思ったこと・Cっぽい文法?・$てやると変数・$_は引数の1つ目を受け取れる
1-2.ディレクトリ一覧表示引数で渡したパスのディレクトリとファイルを表示する。オプションの有無でサブディレクトリも表示するかを切り替える>list.pl "C:" -rみたいに使いたい。
1-2.コード例#-------------------------------------------------------------------------# Usage:command path [-r]# Usage:command...
1-2.思ったこと・USE ってやるとライブラリを使える・=>は、"key"=>"value"として使うらしい・$ARGV にコマンド引数が配列で格納される・空文字と数字の0は偽になるらしい
1-3.ファイルアップロードコンパイルしたモジュールを開発サーバーへアップロードしたい。あるディレクトリに格納されているモジュールを、FTP経由で開発サーバーへとアップロードしようとした。
1-3.コード例use Net::FTP;use Config::Tiny;my   $config = Config::Tiny->new->read(setting.ini);my   $ftp=$config->{_}->{FTP_SER...
1-3.思ったこと・こんなに少ないStep数で処理できてすごい!(脳内Java比)・=~ /.*hoge.*/ みたいにいきなり正規表現でかけるのがすごい・文字コードがよくわからない。
1-4.Excelを読み込むExcelファイルを読み込んで記載されているパスを取得し、そのパスにあるモジュールを開発サーバーにアップロードする。
1-4.コード例use Win32::OLE qw(in with);use Win32::OLE::Const Microsoft Excel;my $excel = Win32::OLE->GetActiveObject(Excel.App...
1-4.思ったこと・ || die 、or dieをつけると例外をキャッチしてくれる、、、?・Excel操作めんどくさい。ExcelのDOM構造を知ってないとかけない・Close処理忘れると悲惨・Excel方眼紙作成時の強い味方に・・・・文字コ...
2.まとめ・ソフトをインストールするのに稟議が必要な環境とかでも、デフォルトで入ってることが多い。Windows? 残念!・型とかなくてがんがん書いていけるので、ちょっとした自動化などをさくっと書きたい時によいかも。・文字コードがめんどくさい・...
2.まとめ・文字コードについて  ○読みこむ先のファイルの文字コード  ○書き込む先のファイルの文字コード  ○ソースコード内に記載されたリテラルの文字コード  ○Perl内部で処理する際の文字コード
ご清澄ありがとうございました。
Upcoming SlideShare
Loading in …5
×

初めてのPerl

1,548 views

Published on

Chiba.pm #1 のLTで使用したスライド。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,548
On SlideShare
0
From Embeds
0
Number of Embeds
359
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

初めてのPerl

  1. 1. 初めてのPerl@Arvelt
  2. 2. 自己紹介名前:****twitter:@Arvelt        はてなID:arveltブログ:arveltの技術メモ仕事: SIerで客先常駐。たまに違う現場へ。  Java、COBOL、(ASP.NET、VB.NET)最近興味あること: Web系かっこいい。Android、Ruby on Rails。 …え、Perl?
  3. 3. 初めてのPerl1.Perlを使ってみた。 1-1.CSVファイルを読みこむ。 1-2.ディレクトリの一覧を表示する。 1-3.ファイルをFTP経由でアップロードする。 1-4.Excelファイルを読み込む。2.まとめ
  4. 4. 1.Perlを使ってみたとある環境Windows7 Perofessional 32bitActivePerlをダウンロードして、インストール>Perl --versionThis is perl 5, version 14>perl -e "print hello,world!"hello,world!
  5. 5. 1-1.CSVの読み込みtypeperfコマンドで吐き出したCSVファイル。これを読み込んで、直近15秒くらいの平均を計算。負荷を判定しようとした。
  6. 6. 1-1.コード例open(IN, perform.csv );while(<IN>){ #改行除去、カンマ区切りで配列へ chomp ($_); my @data = split(/,/, $_); #クォーテーション除を for (my $i=0; $i<@data; $i++) { $data[$i] =~ s/(")+//g; } #値の取得 $value1 = $data[1]; $value2 = $data[2]; $value3 = $data[3];}close(IN);
  7. 7. 1-1.思ったこと・Cっぽい文法?・$てやると変数・$_は引数の1つ目を受け取れる
  8. 8. 1-2.ディレクトリ一覧表示引数で渡したパスのディレクトリとファイルを表示する。オプションの有無でサブディレクトリも表示するかを切り替える>list.pl "C:" -rみたいに使いたい。
  9. 9. 1-2.コード例#-------------------------------------------------------------------------# Usage:command path [-r]# Usage:command path [--recursive]#-------------------------------------------------------------------------use Getopt::Long;#コマンドオプションmy $opt_recursive = 0; #サブディレクトリを検索するかどうかGetOptions( recursive => $opt_recursive );my $directory = $ARGV[0];if ( ! $directory ) { print "No Args ! Usage:command PATH" ; exit(1);}searchDirectory( $directory ); #指定したディレクトリを走査する再帰処理
  10. 10. 1-2.思ったこと・USE ってやるとライブラリを使える・=>は、"key"=>"value"として使うらしい・$ARGV にコマンド引数が配列で格納される・空文字と数字の0は偽になるらしい
  11. 11. 1-3.ファイルアップロードコンパイルしたモジュールを開発サーバーへアップロードしたい。あるディレクトリに格納されているモジュールを、FTP経由で開発サーバーへとアップロードしようとした。
  12. 12. 1-3.コード例use Net::FTP;use Config::Tiny;my $config = Config::Tiny->new->read(setting.ini);my $ftp=$config->{_}->{FTP_SERVER} ;my $ftp_id=$config->{_}->{FTP_ID } ;my $ftp_pass=$config->{_}->{FTP_PASS } ;my $ftp = Net::FTP->new($FTP_SERVER) or die "Cannot connect to $FTP_SERVER: $!";$ftp->login( $ftp_id, $ftp_pass); # ログイン$ftp->put( $uploadfile ) ; # アップロード$ftp->quit;
  13. 13. 1-3.思ったこと・こんなに少ないStep数で処理できてすごい!(脳内Java比)・=~ /.*hoge.*/ みたいにいきなり正規表現でかけるのがすごい・文字コードがよくわからない。
  14. 14. 1-4.Excelを読み込むExcelファイルを読み込んで記載されているパスを取得し、そのパスにあるモジュールを開発サーバーにアップロードする。
  15. 15. 1-4.コード例use Win32::OLE qw(in with);use Win32::OLE::Const Microsoft Excel;my $excel = Win32::OLE->GetActiveObject(Excel.Application) || Win32::OLE->new(Excel.Application, Quit) || die cannot get active excel!interupted.;my $book = $excel->Workbooks->Open( test.xlsx ) || die "no File. interupted. :$!"; # ファイルを開くmy $sheet = $book->Worksheets( sheet1 ) || die No sheet! Interupted.; #シートを取得するmy $data = $sheet->Range("A1")->{Value} || die No ref. Interupted.;print "$datan"; #値を取得する#ブックを閉じる$book->Close();#エクセルを閉じる$excel->quit();
  16. 16. 1-4.思ったこと・ || die 、or dieをつけると例外をキャッチしてくれる、、、?・Excel操作めんどくさい。ExcelのDOM構造を知ってないとかけない・Close処理忘れると悲惨・Excel方眼紙作成時の強い味方に・・・・文字コードのせいか、パスが文字化けして読み込めなかった。 同じ処理をRubyで書いてみたら 一発で動いた件について
  17. 17. 2.まとめ・ソフトをインストールするのに稟議が必要な環境とかでも、デフォルトで入ってることが多い。Windows? 残念!・型とかなくてがんがん書いていけるので、ちょっとした自動化などをさくっと書きたい時によいかも。・文字コードがめんどくさい・省略されすぎてわかりづらい。・フリーダムに書け過ぎるから大きなアプリケーションだと統一感がなくなるかも?・有名なフレームワークとかあるのかな?・やりたいことから、おすすめのCPANモジュールを調べる方法は?
  18. 18. 2.まとめ・文字コードについて  ○読みこむ先のファイルの文字コード  ○書き込む先のファイルの文字コード  ○ソースコード内に記載されたリテラルの文字コード  ○Perl内部で処理する際の文字コード
  19. 19. ご清澄ありがとうございました。

×