Perl

grep

grepは、指定した配列から、指定の条件を満たす要素を取り出す。grep関数 - 特定の条件を満たす配列要素のみ取得 - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステム開発最初に条件式、その次以降に配列やリストを指定。 1…

SUPER

SUPERで、親クラスのメソッドを呼ぶことが出来る。perlobj - Perl のオブジェクト - perldoc.jpBaseClassのmethodは、"BaseClass::method"と出力するだけ。DerivedClassのmethodは、"DerivedClass::method 1"と"DerivedClass::method 2"を出力し、その間に$t…

@ISA

クラスの継承には@ISAを使う。クラスを継承する - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステム開発BaseClassにbase_methodを用意しておく。DerivedClassにderived_methodを用意しておく。 useでBaseClassを読み込み、…

コンストラクタ

blessで自身の持っている無名ハッシュリファレンスと自身のパッケージと紐付ける。 そして、メソッドの呼び出し方にはいくつかの方法がある。 これらを組み合わせることで、C++やJava風にコンストラクタを書くことが出来る。コンストラクタの作成 - Perlプロ…

メソッド

クラスのメソッドの書き方には、いくつかある。perlobj - Perl のオブジェクト - perldoc.jpmethod1に渡される引数を2番目まで出力。アロー演算子を使った今までの方法のほかに、メソッド名の後ろにオブジェクト名、そしてメソッド名の後ろにクラス名という…

bless

blessは、指定されたリファレンスと指定されたクラスを紐付ける組み込み関数。bless関数 - オブジェクトの生成 - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステム開発2つ目のクラス名を省略した場合は、そこのパッケージ…

クラス

Perlにおいて、クラスの正体はモジュールである。Perlでオブジェクト指向プログラミング - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステム開発ただし、オブジェクトを作る方法が特殊で、オブジェクトの正体はリファレン…

caller

callerは、呼び出し元情報を取得する組み込み関数。caller関数 - 呼び出し元情報を取得する - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステム開発func3でcallerを呼ぶ。 callerの戻り値をリストで取ると、1番目がパッケ…

Exporter::@EXPORT_OK

@EXPORTは、無条件で公開されたが、@EXPORT_OKは、use モジュールパッケージ名の後の引数に指定した関数名と同じものなら公開される。Exporter - 関数をエクスポートする - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステ…

useの引数

useには、引数を渡すことが出来る。use - モジュールを読み込む - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステム開発 独自のimport関数を定義する話 - Qiitaよく渡されるのは、公開してもらいたい関数名リストだが、こ…

strict

use strictを使うことで、厳密な文法チェックをし、場合によってはエラーを出す。strict - 文法チェックを厳しくする - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステム開発 厳密な構文チェック - プログラムの基本構成 -…

warnings

use warningsを使うことで、スクリプトをチェックし、警告を出してくれる。warningsモジュール - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステム開発 厳密な構文チェック - プログラムの基本構成 - Perl入門たとえば、 #…

local

localは、パッケージ変数の値を一時的に退避し、別の値を入れておいて、パッケージスコープを抜けたら、元に戻すことが出来る。local - パッケージ変数を一時的に退避して復元 - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシ…

our

ourは、パッケージ変数の宣言時に使う。our - パッケージ変数の宣言 - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステム開発myで宣言したレキシカル変数は、スコープを抜けると参照できないが、ourで宣言したパッケージ変…

my

myは、レキシカル変数の宣言時に使う。my - レキシカル変数の宣言 - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステム開発型のある言語でいうところのローカル変数宣言である。 基本的にPerlの場合、変数を宣言しなくても…

モジュール

もうひととおりモジュールについて説明したけど、改めてモジュールを作ってみる。Perlモジュール徹底解説 - Perlプログラミング入門ゼミ - Perlでテキスト処理・Linuxサーバー管理・Webシステム開発今回は、モジュールを置くディレクトリを掘って、その中に…

END

ENDは、Perlの終了前に実行される。 dieなどの強制終了でも呼ばれる。初期処理、終了処理を定義する方法[Perl] : バヤシタCustomModule.pmで、END、そしてerror_funcを用意。 error_funcの中で、dieを呼んでるが、その後に"error after!"と出力している。 #!…

Exporter::@EXPORT

Exporterの@EXPORTにどんどん公開メソッドを追加していけば、どんどん見える。 逆に、追加しないメソッドは非公開メソッドになる・・・かというとそういうわけではないというか・・・。Exporter - 関数をエクスポートする - Perl入門ゼミCustomModule.pmで、…

Exporter

Exporterモジュールを使うと、モジュールからメソッドを呼び出す時に、パッケージ名を付けたりするのが不要になる。 モジュールにimportの実装も不要。Exporter - 関数をエクスポートする - Perl入門ゼミCustomModule.pmは、public_method_1を定義して、@EXP…

CORE

Perlの組み込み関数は、COREパッケージに含まれている。CORE - Namespace for Perl's core routines - metacpan.orgCOREを付けて、printを呼び出した場合は、 $ vi CORE.pl $ perl CORE.pl ABC DEF JKL MNO $このように、組み込み関数のprintが呼ばれる。Sam…

main

パッケージ名を宣言していない場合、そこの変数や関数はmainパッケージに含まれる。package - パッケージの宣言 - Perl入門ゼミ最初のprintは組み込み関数printとして呼ばれる。 その後、printを定義していて、パッケージ名がこのファイルには宣言されていな…

@INC

モジュールの検索パスのリストは、配列@INCに格納されている。 useやrequireでモジュールを読み込む時、このリストのそれぞれのパスからモジュールを探索している。モジュールの検索パス @INC - Perl入門ゼミ配列なのでforeachで取り出す。実行すると、 $ vi…

import

requireはimportを実行しない、useはimportを実行する。 importは、なんのことはない、ただモジュールに定義された関数である。Perlの組み込み関数 import の翻訳 - perldoc.jp 独自のimport関数を定義する話 - Qiita perl のモジュールインポートまわりの整…

BEGIN

モジュールにおいて、BEGINは特別な関数で、モジュールをuseやrequireされた時に実行される。 主に初期化処理で使う。豆知識 - 知っておくと役に立つ - Perl入門ゼミ perl のモジュールインポートまわりの整理 - Please Sleep perlのコードでよく見かけるreq…

require

requireも、モジュールを読み込むのだが、useがコンパイル時評価及び初期化処理も含むのに対し、requireは実行時評価で初期化処理は行われない。そのため、外部に公開されている関数を認識できず、ただの文字列リテラルとして認識してしまう。require - モジ…

use

モジュールを読み込むには、useを使う。use - モジュールを読み込む - Perl入門ゼミ今回は、Cwdモジュールでカレントディレクトリパスを取得する。Cwdモジュールのgetcwdでカレントディレクトリパスを取得し、それを出力。 $ vi use.pl $ perl use.pl /home/…

スコープ解決演算子

PerlもC++と同様に"::"でスコープ解決する。 つまり、パッケージを指定してその中の変数にアクセスできる。package - パッケージの宣言 - Perl入門ゼミパッケージ名と変数名を連結した「完全修飾名」で呼び出している。 $ vi package.pl $ perl package.pl 1…

join

joinは、指定された区切り文字を挟んで、配列を結合する。join関数 - 区切り文字で配列を結合 - Perl入門ゼミ':'で結合。 実行すると、 $ vi join.pl $ perl join.pl abc:def:ghi $確かに結合された。Sample/perl/join/join/src/join at master · bg1bgst333…

パッケージ

Perlでは、オブジェクト指向関連の機能が後付けで追加された。 その中の機能の一つがパッケージであり、C++の名前空間や、Javaのパッケージに相当するものである。package - パッケージの宣言 - Perl入門ゼミパッケージやブロックが変数の所属にどのように影…

reverse

reverseは、渡された配列や文字列を逆順にする。reverse関数 - 配列/リスト - Perl関数のリファレンス実行すると、 $ vi reverse.pl $ perl reverse.pl 1 2 3 4 5 5 4 3 2 1 ABCDE EDCBA $確かに逆になっている。Sample/perl/reverse/reverse/src/reverse at…