1. ホーム
  2. スクリプト・コラム
  3. パール

Perlでよく使われる記号と操作

2022-02-07 20:06:53

コメント

1. 一行で。#プリント
2. マルチライン:=pod ......=cut

perl関連のクエリ。

Perldoc perlvar($a,$$,$"...)です。
Perldoc perfunc(sort...)です。
perldoc perl perldocの記事一覧を見る
Perldoc -q 正規表現
Perldoc -f 関数名
Perldoc モジュール名 モジュールを表示する
Perldoc -v 変数名 変数を表示する
Perldoc perlop ビュー演算子

モジュール関連の関数を表示します。

1. perl -d -e 0
2.module::submodを使用する
3.S module::submod

テストプログラムのランタイム。

1. Unixの場合。時間 perl5 perl_program
2. プログラム内に追加します。$end_time = time(); $elapsed_time = $^T - $end_time; print $elapsed_time;
3. perl プログラム内で benchmark モジュールを使用: use benchmark; timestamp1 = new benchmark; {Code}; timesamp2 = new benchmark; time_run = timediff(timestamp2 - timesamp1);

シンボル

<=> 宇宙船演算子。三項比較の数値演算子。a<=>$b この演算子は2つの数値を比較し、-1,0,1を返す。1: $a>$b, 0: $a=$b, -1: $a<$b と返す。
a,$bはソートで、1番目と2番目に入力されるスカラーや配列などを表すのに使われます。
$! コンテキストに応じて、エラー番号またはエラー文字列を返します。
リストセパレータ $"
数字を印刷する際のデフォルトの数字出力フォーマット
PerlインタプリタのプロセスID
$% 現在の出力チャネルのページ番号
前の書式に一致する$&文字列
$( 現在のプロセスのグループID $) 現在のプロセスの有効なグループID
$* 複数行の書式を処理するために1を設定します。現在はほとんど /s と /m 修飾子で置き換えられています。
$, 現在の出力フィールドのセパレータ
$. 最後に読み込んだファイルの現在の入力行番号
$/ 現在の入力レコードの区切り文字、デフォルトは改行です。
$: 連続したフィールドを埋めるために、文字列を区切る文字セット。
多次元配列をエミュレートする際に使用されるセパレータ。
$? 最後の外部コマンドのステータスを返します
Perl インタープリタが eval 文から返したエラーメッセージ。
$[ 配列の最初の要素のインデックス番号
The separator of current output record
$] Perl インタープリターのサブバージョン番号
$^ 現在のチャンネルの最上位ページの出力フォーマット名
$^印刷前にフォーマットされたデータを保存するための変数
$^D デバッグフラグの値
UNIX以外の環境での$^Eオペレーティング・システム拡張エラー・メッセージ
$^F ファイルバンドルの最大値
コンパイラで有効化された構文チェック状況
組み込みのコントロールエディターの値
出力チャンネルに送られる$^Lウォークオーバーキャラクタ
$^M 予備メモリプールのサイズ
$^O オペレーティングシステム名
$^P 現在のデバッグ値を指定する内部変数
$^R 正規表現ブロックの最後の評価結果
$^S 現在のインタープリタの状態
$^T 新世紀の始まりからの開始時間(秒)、フットプリント
$^V Perlバージョン {パールバージョン
$^W 警告スイッチの現在値
Perl バイナリ実行コード名(perl 命令) $^X
$_ デフォルトの入出力およびフォーマットマッチング空間
$| 現在選択されている出力ファイルハンドルのバッファリングを制御します。
$~ 現在のレポートフォーマットの名前
前のフォーマットマッチメッセージの前の文字列
$' 前のフォーマットマッチの後の文字列
$+ 直前の正規表現と一致する検索形式の最後のブラケット
インタープリタを現在実行しているユーザーの実ID $< です。
$ には、直前にマッチした正規表現に対応する括弧の結果が含まれる
$= 現在のページで印刷可能な行数
$> 現在のプロセスの有効なユーザーIDは、実行中のスクリプトのファイル名を含んでいます。
ARGV デフォルトのファイルハンドルから読み込むときの現在のファイル名
%ENV 環境変数のリスト
INC do または require によってインクルードされるファイルのリストです。
SIG シグナルとその処理方法のリスト
サブルーチンに渡されるパラメータ一覧
ARGVでスクリプトに渡されるコマンドライン引数のリスト
INC モジュールをインポートする際に検索するディレクトリのリスト
$-[0] と $+[0] は、マッチする文字列の中で、現在マッチする正規表現の開始位置と終了位置を表します。

while(){ 
  my($date,$desc,$income,$expend) = unpack("A10xA27xA7xA*"); 

簡単な説明

  A10:AはASCII、A10はASCII10文字、DateはASCII10コードを使用することを意味します。
  x : xはヌルバイトを意味し、バイトをスキップするのと同じ意味であり、つまり、文字をスキップしなければならない (|)
  A27: その後に27個のASCII文字が続きます。
  x : その後、vharをスキップして
  A7 : その後、さらに7つのASCIIをピックアップする、その
  x : 1文字飛ばした後、その
  A* : 最後のA*は、charがいくつ続いても、すべて含まれることを意味します。

通常のサブルーチン呼び出しでは、@ISA配列は検索されません。しかし、ユーザがメソッド呼び出しの構文でサブルーチンを呼び出した場合、プログラムは@ISA配列を検索します。

  ISA = qw(Exporter Net::Cmd IO::Socket::INET);
varsは、グローバル変数を事前定義するPerlのプラグマです。qw() リストにあるこれらの定義済みグローバル変数は、Perl ファイル全体で使用でき、use strict が使用されても警告されることはありません。
vars qw($TELNET_IAC $TELNET_IP $TELNET_DM) を使用します。
($telnet_iac,$telnet_ip,$telnet_dm) = (255,244,242) となります。


$-[0] と $+[0] は、マッチする文字列の中で、現在マッチする正規表現の開始位置と終了位置を表します。
|- は "output to" パイプを開くので、開いたファイルのハンドルに書き込むことができます。
|quot;from"パイプを開くと、このファイルハンドルからデータを読み込むことができます。


#! /usr/bin
print $_." \n";# デフォルトの入力です。
print @_." \n";# 関数の引数


#ローカル変数
print $&." \n";# 文字列をパターンマッチに使用する場合、文字列はマッチ前の部分、マッチ上の部分、マッチ後の部分の3つに分割されます。どの部分も空でもよく、この変数は直近にマッチした文字列を参照します。
print $'." \n";# マッチした部分の後ろの部分。
print $`." \n";# 最新の一致した部分、一致した部分の前の部分。
print $+." \n";# 最後の括弧の中の部分式にマッチする部分です。
print $*." \n";# デフォルトでは、Perlはマッチングを高速化するためにパターンに改行が含まれないと見なし、つまり1行マッチングのみが実行されます。複数行のマッチングを行いたい場合は、この値を 1 に設定してください。
print @+." \n";# この配列は、現在のマッチの最後に成功したサブマッチの終わりからのオフセットを保持します。0]はマッチ全体のオフセットです。1]は$1末尾のオフセット、$+[2]は$2末尾のオフセットです。
print @-." \n";#$-[0] は最後に成功したマッチの開始点からのオフセットです。n]はn番目のサブパターンのオフセット、またはマッチしなかった場合はundefです。また、$-[0]は
は、マッチ全体の開始点からのオフセットと見なすことができます。1]は$1が始まる場所、$-[2]は$2が始まる場所、といったように。
プリント
# 入力、出力変数
print $..." \n";# 最後に実行された読み込み操作の現在の行数です。明示的にファイルハンドルをクローズすると、行数がリセットされます。
print $/." \n";# レコードセパレータを入力します、デフォルト値は改行です。
print $,." \n";# 印刷操作のための出力フィールドセパレーターです。
print $..." \n" # The output record separator for the print operation. 通常、改行を省略するために使用します。
print $"." \n";# 配列を文字列に変換する場合、要素はデフォルトでスペースで区切られます(例: 配列を印刷する場合など)。この変数はその区切り文字を表し、デフォルトではスペースになります。
print $^L."\n";# フィード動作の際に出力する文字です。デフォルトはⒶです。
print $:." \n";# は、現在折れ線として使用できる文字のセットです。デフォルトは" \n" (つまり、空白文字、改行文字、ハイフン)です。
print $^A."\n";# 書式付き行の書き込みコレクターの現在の値です。


#エラー変数
print $?." \n";#$CHILD_ERROR には、最近実行された外部プログラムの終了ステータスが格納されます。これらのプログラムは、パイプライン、逆ドット(")、またはシステム関数を介して実行されます。
print $!." \n";#$OS_ERROR, $ERRNO はシステムエラーです。数値として使用する場合はシステムエラーコード、文字列として使用する場合はエラーメッセージの文字列となります。
print $^E."\n";#$EXTENDED_OS_ERROR 一部のプラットフォームで、拡張エラーメッセージを返します。
プリント をクリックすると、"EVAL_ERROR "が表示されます。 直前の eval コマンドによる Perl 構文エラーメッセージ


#システム変数
print $$." \n";# 現在のスクリプトを実行しているPerlプロセスのpidを表示します。
print $<." \n";# 現在のプロセスの実際のユーザー識別子(uid)です。
print $>." \n";# 現在のプロセスの実際のユーザー識別子です。
print $(." \n")# 現在のプロセスの実際のグループ識別子 (gid) です。
print $)." \n";# 現在のプロセスの実際のグループ識別子です。
print $0."\n";# 実行中のPerlスクリプトのファイル名です。このパラメータは実行時間の入力に関係します
print $[." \n";# 配列の最初の要素または部分文字列の最初の文字の序数を指定します。デフォルトは0です。
print $]." \n";# バージョン番号と、パッチレベルを1000で割った値を返します。
print $M."\n";# $Mの内容は、Perlがメモリ不足になったときの緊急メモリプールとして使用することができます。Mを使用するにはPerlの特別なコンパイルが必要です。
print $^F."\n";# システムファイル記述子の最大値、通常は2です。
print $^I."\n";# 拡張子の現在値をインプレースで編集します。インプレース編集はundefで無効にできます。
print $^W."\n";# 警告スイッチの現在の値、true または false です。
print $^T."\n";# スクリプトの実行を開始した現在の時刻です。単位は1970年からの秒数です。
print $^O."\n";# Perl自体がコンパイルされた時のOS名です。
print $^X."\n";# Perlのバイナリ実行ファイルの名前です。
print $^D."\n";# デバッグフラグの現在の値です。
print $^P."\n";# デバッグがオンになっているかどうか。
print $ARGV."\n";# < > から読み込むときの現在のファイル名です。


#その他
print @ARGV."\n";# コマンドライン引数。
print $ARGV."\n";# 標準入力を表す、現在のファイル名 .
print @INC."\n";# Perlスクリプトのアドレステーブルを探します。
print %INC;# doまたはrequirに含まれるファイル名のディレクトリを検索します。
print $#ARGV 配列の長さ-1