Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
初めてのPerl
Search
arvelt
May 21, 2015
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
初めてのPerl
arvelt
May 21, 2015
More Decks by arvelt
See All by arvelt
HugoとNetifyで作る静的サイト
arvelt
0
580
Hello Pebble Watch
arvelt
1
89
サバイバルゲームのCQB
arvelt
1
580
枯れた技術の水平思考
arvelt
2
870
Other Decks in Programming
See All in Programming
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
280
AWSに止められる覚悟してますか?
morizo_1984
2
540
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
410
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
残高管理から台帳サービスへの進化
artoy
1
200
AmebaブログはKMPから卒業します
kmars0605
0
190
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
210
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
220
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
32k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
190
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
Practical Orchestrator
shlominoach
192
12k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
550
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
490
Rails Girls Zürich Keynote
gr2m
96
14k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
What's in a price? How to price your products and services
michaelherold
247
13k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
Transcript
初めてのPerl @Arvelt
自己紹介 最近興味あること: Web系かっこいい。Android、Ruby on Rails。 …え、Perl? 仕事: SIerで客先常駐。たまに違う現場へ。 Java、COBOL、(ASP.NET、VB.NET) 名前:****
twitter:@Arvelt はてなID:arvelt ブログ:arveltの技術メモ
初めてのPerl 1-1.CSVファイルを読みこむ。 1-2.ディレクトリの一覧を表示する。 1-3.ファイルをFTP経由でアップロードする。 1-4.Excelファイルを読み込む。 1.Perlを使ってみた。 2.まとめ
1.Perlを使ってみた とある環境 Windows7 Perofessional 32bit ActivePerlをダウンロードして、インストール >Perl --version This is
perl 5, version 14 >perl -e "print 'hello,world!'" hello,world!
1-1.CSVの読み込み typeperfコマンドで吐き出したCSVファイル。 これを読み込んで、直近15秒くらいの平均を計算。 負荷を判定しようとした。
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);
1-1.思ったこと ・Cっぽい文法? ・$てやると変数 ・$_は引数の1つ目を受け取れる
1-2.ディレクトリ一覧表示 引数で渡したパスのディレクトリとファイルを表示する。 オプションの有無でサブディレクトリも表示するかを切り替える >list.pl "C:" -r みたいに使いたい。
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 ); #指定したディレクトリを走査する再帰処理
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_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;
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.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 "$data\n"; #値を取得する #ブックを閉じる $book->Close(); #エクセルを閉じる $excel->quit();
1-4.思ったこと ・ || die 、or dieをつけると例外をキャッチしてくれる、、、? ・Excel操作めんどくさい。ExcelのDOM構造を知ってないとか けない ・Close処理忘れると悲惨 ・Excel方眼紙作成時の強い味方に・・・
・文字コードのせいか、パスが文字化けして読み込めなかった。 同じ処理をRubyで書いてみたら 一発で動いた件について
2.まとめ ・ソフトをインストールするのに稟議が必要な環境とかでも、デフォルトで入ってること が多い。Windows? 残念! ・型とかなくてがんがん書いていけるので、ちょっとした自動化などをさくっと書きたい 時によいかも。 ・文字コードがめんどくさい ・省略されすぎてわかりづらい。 ・フリーダムに書け過ぎるから大きなアプリケーションだと統一感がなくなるかも? ・有名なフレームワークとかあるのかな?
・やりたいことから、おすすめのCPANモジュールを調べる方法は?
2.まとめ ・文字コードについて ◦読みこむ先のファイルの文字コード ◦書き込む先のファイルの文字コード ◦ソースコード内に記載されたリテラルの文字コード ◦Perl内部で処理する際の文字コード
ご清澄ありがとうございました。