Perl

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…

splice

spliceは、配列に対して複雑な操作ができる。splice関数 - 配列の要素の複雑な操作 - Perl入門ゼミ簡単に言うと、指定した位置からの指定した個数の要素たちを、指定した別の複数要素たちに置き換えるというか・・・。2番目からの2つ、300と400を、@newの3つ…

pop

popは、配列の末尾から要素を取り出す。pop関数 - 配列/リスト - Perl関数のリファレンス実行すると、 $ vi pop.pl $ perl pop.pl 10 20 30 30 10 20 $最初の3つがpop前の配列。 次が取り出した値30。 最後に残った10と20。 末尾から取り出せた。Sample/perl…

unshift

unshiftは、配列の先頭に要素を追加。unshift関数 - 配列/リスト - Perl関数のリファレンス実行すると、 $ vi unshift.pl $ perl unshift.pl $array[0] = 100 $array[1] = 200 $array[2] = 300 $var = 50 $array[0] = 50 $array[1] = 100 $array[2] = 200 $a…

tr///

文字を置換する場合は、"tr///"を使う。tr - Perlリファレンス"a"を"A"に、"C"を"c"に。 $ vi tr.pl $ perl tr.pl ABcDE AABcc AABcc ABAcc AAAcc AAbcc AAABc AAbcc $それぞれの文字が置換された。Sample/perl/tr/tr/src/tr at master · bg1bgst333/Sample ·…

s///

パターンにマッチした文字列を、別の文字列に置換する場合は、"s//"を使う。Perl講座: 変数と文字列として、"AbC"または"ABC"があれば、"XYZ"に置換する。 $ vi s.pl $ perl s.pl XYZDE aaBCC AaBCC ABACC AAACC aXYZC aAaBC AAbcC $ 正確に一致するところだ…

m//

パターンマッチは以前もやっているが、実は、"//"というのは"m//"の省略形らしい。パターンマッチ演算子(m//) - 正規表現の基本 - Perlにおける正規表現ここだとパターンマッチ演算子と言っているけど、"m//"は組み込み関数の1つと書いてあるところもあって…

rindex

rindexは、指定された文字列の中で、指定された部分文字列があった場合に、最後に見つかった場所の位置(前から数えて)を返す。rindex関数 - 文字列 - Perl関数のリファレンス3番目の検索終了位置がわかりにくいけど、として実行すると、 $ vi rindex.pl $ pe…

index

indexは、指定された文字列の中で、指定された部分文字列がどこにあるか、位置を返す。Perlの組み込み関数 index の翻訳 - perldoc.jp3番目に渡す探索位置で結果が変わってくる。指定しない場合は最初から、指定する場合はその位置からになるので、 $ vi ind…

substr

substrは、指定された文字列の中から、指定された位置や長さの部分文字列を抜き出す。Perlの組み込み関数 substr の翻訳 - perldoc.jp3つのパターンでやってみる。これで、 $ vi substr.pl $ perl substr.pl ABCDE CD CDE $このように抜き出せた。Sample/per…

length

lengthは、指定された文字列の長さを返す。Perlの組み込み関数 length の翻訳 - perldoc.jpこれで、 $ vi length.pl $ perl length.pl 5 $"ABCDE"の長さは5。Sample/perl/length/length/src/length at master · bg1bgst333/Sample · GitHub

chop

chopは、指定された文字列の最後の文字を取り除く。Perlの組み込み関数 chop の翻訳 - perldoc.jpchompは、末尾が改行なら取り除き、そうでないなら何もしないのに対して、 chopは、条件なく最後の文字を取り除く。これで、 $ vi chop.pl $ perl chop.pl ABC…

x演算子

x演算子を使うと、文字列やリストなどの処理を繰り返すことができる。繰り返し演算子「x」 - Perl入門ゼミ実行すると、 $ vi x_operator.pl $ perl x_operator.pl ABCABCABC 10 20 10 20 $確かに繰り返している。Sample/perl/x_operator/x_operator/src/x_op…

冪乗演算子

**で冪乗を計算できる。べき乗演算子 - ** - Perl入門ゼミ実行すると、 $ vi exponentiation_operator.pl $ perl exponentiation_operator.pl $y1 = 8 $y2 = 625 $y3 = 49 $冪乗が計算できてる。Sample/perl/exponentiation_operator/exponentiation_operato…

型グロブ

Perlは、変数名などのシンボルが同じでも、頭の記号で、変数だったり、配列だったり、ハッシュだったりする。 型グロブは、このシンボルテーブルのエントリーを表現する。型グロブを理解する - Perl入門ゼミ *をつけて型グロブを取得できる。 型グロブに型グ…

シンボリックリファレンス

シンボリックリファレンスは、非常に不思議な機能である。The Perl5 Manual - シンボリックリファレンス シンボリックリファレンス単なる文字列の代入が、その文字列の名の付いた変数へのリファレンスの代入にもなるという2つの意味を持つ。 どちらを出力し…

構造体

ハッシュのリファレンスをネストしていって、構造体を作ることができる。Perl - 無名配列と無名ハッシュ (itsのブログ)foreachで構造体のメンバを比較的簡単に参照できる。 $ vi hash.pl $ perl hash.pl 1 Taro 20 Tokyo 2 Jiro 18 Osaka 3 Saburo 16 Nagoya…