Perl入学式 全6回のPerl入門講座。東京、大阪、沖縄、札幌で開催。(東京は4月と10月スタート、それ以外は5月スタート) YAPC::Japan Perlを軸としたITに関わる全ての人のためのカンファレンス。 東京 吉祥寺.pm 五反田.pm 大阪 なにわPerl 沖縄 沖縄.pm
Perl › サブルーチン › here Perlで「クロージャー」を作成する方法を解説します。 クロージャの定義 クロージャの定義をコードを使って解説します。 use strict; use warnings; # もっともシンプルなクロージャ { # 変数の生成 my $var = 5; sub var { return $var; } } # スコープが終わってもvarサブルーチンに参照されているため、 # $var は存在し続ける。 # var サブルーチンだけが、$var を見ることが可能。 print "1: もっともシンプルなクロージャ\n"; print var(), "\n"; クロージャの定義 クロージャであるための条件は、サブルーチンが、自分のスコープ外のレキシカル変数を参照していることです。( この例では、var が、自分のスコープ外の$var を参照。) クロージ
Perl › モジュール › here Hash::Utilモジュールを使ってハッシュのキーの追加を禁止することができます。 use Hash::Util; # 制限 Hash::Util::lock_keys(%hash); # 解除 Hash::Util::unlock_keys(%hash); Hash::Util::lock_keysを使えば、ハッシュのキーを制限することができます。引数にハッシュのみを指定した場合は、現在のキー以外のキーの追加が禁止されます。 %hash = (); # key1 と key2に制限。 @restrict_keys = qw/key1 key2/; Hash::Util::lock_keys(%hash, @restrict_keys); # 制限を解除。 Hash::Util::unlock_keys(%hash); 第2引数にキーを指定すると、
HTMLをパースしてくれるHTML::Parser。検索結果で出てくるマニュアルはいまいち分かりづらかったので、自分なりの試行錯誤メモを残しておく。 HTMLを読み込んで、特定タグの要素を抜き出す。 a タグと img タグだけの簡単なHTMLを用意して、それぞれに指定されたhref属性とsrc属性を抜き出してみる。 <html> <head> <title>TEST</title> </head> <body> <a href="http://kirinji.amayan.jp/"><img src="http://kirinji.amayan.jp/kirinji_top.gif"></a> </body> </html> で、これをHTML::Parserで解析してみる。 #!/usr/bin/perl use strict; use warnings; use HTML::Pars
Perl › モジュール作成 › here Perlは、シンボルテーブルというものを持ち、プログラマーが、それを参照したり、変更を加えたりすることができます。Perlは、他の言語に比べて、柔軟で、高い適応力を持ちますが、その力をを生み出している機能のひとつがシンボルテーブルです。 シンボルテーブルは、%main:: という名前の単なるハッシュです。%main:: というハッシュから、実行されているスクリプトの持つすべてのサブルーチンとパッケージ変数を知ることができます。( レキシカル変数を除く ) シンボルテーブルの内容を覗いてみる # mainパッケージの内容を含むシンボルテーブル %main:: # %main:: の別名 %:: シンボルテーブルを通じて、パッケージ変数の内容を知る our $num = 1; ${$main::{num}}; 詳しい説明は、型グロブの解説で、説明しま
Perl › サブルーチン › here Perlのサブルーチンの特徴をまとめておきます。C言語と比較してみました。Perlの言語としての柔軟性が理解できると思います。※1 Perlのサブルーチンの特徴 Perl C言語 1 サブルーチンの定義はどこで行っても良い 一般的に、関数の前方宣言(プロトタイプ宣言)が必要 2 引数の型を宣言しておく必要がない 引数の型を宣言しておく必要がある。 3 戻り値の型を宣言しておく必要がない 戻り値の型を宣言しておく必要がある。 4 デフォルトで可変個の引数を受け取る 引数の個数を宣言時に決めておく必要がある 5 リストを戻り値として使用可能 配列を戻り値にすることはできない 6 レキシカル変数へのリファレンスを戻り値にできる ローカル変数のアドレスを戻り値にできない 7 コンテキストという概念がある コンテキストという概念はない 8 サブルーチンが属す
Perl › サブルーチン › here サブルーチン作成に関するわたしの考えを殴り書きしました。 見出し 引数と戻り値について理解する。 小さなサブルーチンを作成する。 サブルーチンに柔軟性を持たせる。 呼び出しの階層を浅く保つ。 機能を実現するサブルーチンを作成する。 ユーザーを意識する。 将来を楽にすることを考える。 完全な抽象化は求めない。 1. 引数と戻り値について理解する サブルーチンを理解するためには、引数の受け取り方と、戻り値の返却のし方を覚えれば十分です。なぜなら、引数を受け取ってから、戻り値を返却をするまでは、今まで学習したプログラミングとなんら変わることがないからです。引数と戻り値の扱いを、覚えたら、すぐに実践に移りましょう。 サブルーチン作成で、難しいのは、以下の4点です。 何をサブルーチンにするか どのような名前をつけるか 引数を何にするか 戻り値を何にするか 正
Perl › 関数 › here Perlではコンテキストという概念があるので、スカラあるいはリストをコンテキストに応じて返却することができます。 sub func_name{ # 処理 ... return wantarray ? リスト : スカラ; } wantarrayを使えば、リストコンテキストの場合とスカラコンテキストの場合を区別して、戻り値を返却することができます。 wantarrayが使われている標準関数にはlocaltime関数があります。 wantarray関数は使わないほうがよい wantarray関数は、非常に発見しにくバグを生み出しだしがちなので、使用することはお勧めしません。たとえば、スカラが返ってくると思って、関数の引数に指定したら、リストが返っていたということが、起こりうるからです。 # スカラが返ってくると思っていたが、実際はリストが返ってきてしまう fu
Perl › here Perlのプログラミングは、コマンドと呼ばれるテキストを入力して実行します。まず最初にWindowsにおけるコマンド実行ツールであるコマンドプロンプトについて解説したいと思います。 コマンドプロンプトとは コマンドプロンプトとは、Windows環境におけるCUIを用いたプログラムの実行環境です。CUIとは、Character-based User Interfaceの略で、テキストを入力して、プログラムを実行するインターフェースのことです。Windows上で、Perlプログラミングをするときは、コマンドプロンプトを用いて、Perlを実行することになります。 コマンドプロンプトを実行するには 「スタート」 - 「すべてのプログラム」 - 「アクセサリ」 - 「コマンドプロンプト」で実行できます。コマンドプロンプトのアイコンを右クリックでドラッグして、デスクトップに、シ
Perl › ファイル操作 › here 複数階層のディレクトリを作成するにはFile::Pathモジュールのmkpath関数を使用します。 use File::Path 'mkpath'; mkpath $dir_multi_level; 複数階層のディレクトリを作成するには、File::Path モジュールのmkpath関数を使います。 サンプル 複数階層のディレクトリを作成するサンプルです。 use strict; use warnings; use File::Path 'mkpath'; # 複数階層のディレクトリを作成する。 my $dir_multi_level = "dir_20080524_$$/dir1"; print "1: 複数階層のディレクトリを作成する。\n"; mkpath($dir_multi_level); Perl › ファイル操作 › here
Perl › インストール ActivePerlをWindowsにインストールしてPerlを使えるようにしましょう。 ActivePerl | ActiveState ActivePerlはActiveState社によって無償で提供されているPerlディストリビューションの一つです。 特徴は Windows関連のモジュールが多く添付されている ことです。Excelなどを直接操作できるWin32::OLEなどのモジュールが標準で添付されています。 インストールは簡単です。CPANモジュールをインストールすることもできます。 ActivePerlのダウンロード ActivePerlをt次のページからダウンロードします。2018年8月現在の最新版は、5.26.1です。 ActivePerlのダウンロード 登録をするかどうか聞かれることがありますが、必須ではないので、ダウンロードを進めることができ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く