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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
88
サバイバルゲームのCQB
arvelt
1
570
枯れた技術の水平思考
arvelt
2
860
Other Decks in Programming
See All in Programming
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
480
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
230
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
6
13k
App Intentsのビルドプロセスを支える技術
kntkymt
0
450
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
370
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
580
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
520
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
580
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
300
AWSに止められる覚悟してますか?
morizo_1984
1
370
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
270
Featured
See All Featured
From π to Pie charts
rasagy
1
380
Chasing Engaging Ingredients in Design
codingconduct
0
340
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Typedesign – Prime Four
hannesfritz
42
3.2k
Bash Introduction
62gerente
615
220k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
530
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
550
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
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内部で処理する際の文字コード
ご清澄ありがとうございました。