1. ホーム
  2. スクリプト・コラム
  3. パール
  4. アプリケーションのヒント

Perl 構文による Perl 演算子の使用法ガイド

2022-02-02 12:55:13

Perl 構文 Perl 演算子入門

1. Perlの演算子

1.1 算術演算子

 Perl は変数やデータパラダイムが C と大きく異なりますが、演算子は C とほとんど同じです。C のパラダイム変換演算子 type、ポインタ参照演算子 *ptr とレイアウトメンバセレクタを除けば、他の C 演算子はほとんど Perl に存在し、文字処理などいくつかの新しい演算子が追加されています。

現在までにPerlがサポートしている算術演算子には、次のようなものがあります。

+ 足し算演算子
-減算演算子
*乗算演算子
除算演算子(浮動小数点演算子のみ)
モジュロ演算子(整数値のみ)

Perlの算術演算の例を以下に示します。

$x=2.5;
$y=3;
print($x+2*$y);
print($7/$y);
printint(7/$y)です。
print(7%$y)とします。
print(7.5%$y)となります。

Perl は、インクリメントとデクリメントの演算子もサポートしています。

++ インクリメンタル
-減少

Perlには新しい乗法演算子があります。**以下の例を参照してください。

x=2**3;#2 の3乗
y=2**0.5;# 2の平方根
z=-2**-3;# 結果は、-0.125です。

1.2 ビット演算子に関するPerlの構文

ビット演算子は二項式を整数値で処理し、その結果を整数にします。ビット演算子で操作する数値が文字列や分数の場合、Perlはまずそれらを整数に変換し、32ビット長整数の形式で含みを持たせます。

|ビット演算子
& 演算子でビット単位
. ビット単位の非演算子
<ビット左シフト演算子>ビット右シフト演算子

ビット演算子の詳細については、C言語の話のセクションを参照してください。ここでは、詳細には触れず、いくつかの例だけを紹介します。

$x=5;
$y=3;
print$x|$y;# 結果は7(2進数で111)です。
print$x&$y;#result is 1 (binary implied: 001)
print$x<<2;#result is 20 (2進数の意味合い: 10100) print$x>>1;#result is 2 (2進数の意味合い: 10)

1.3 比較演算子に関するPerlの構文

 比較演算子の効果は、2つのマニピュレータの値を比較することです。Perl は比較演算を行う前に、文字マニピュレータを数値に変換します。

1.4 論理演算子に関するPerlの構文

論理演算子は、ブール式の値を真または偽の結果でテストします。Perlでは、論理演算子の各操作はブール値(すなわち真または偽)であると仮定しています。

|| 論理または演算子。
&& 論理演算子、演算子。

Perl は論理式を左から右の順に評価します。Perl は、論理式または演算子のいずれかが真になったとき、あるいは論理式および演算子のいずれかが偽になったときに、論理式のカウントを停止します。Perl は、この短いループのカウントを使用して、式の値をすばやく計算します。したがって、この 2 つの演算子は、短ループ AND および短ループ OR とも呼ばれます。

これら2つの演算子以外に、3つの論理演算子があります。

! 否定演算子
:precondition演算子
連続数演算子

演算子「! 操作子のブール値を否定するもので、論理的なnon...に相当する。: 3つの操作子を持つ前提演算子は、次のような形で表現されます:condition?true-result:false-result

次の文は、アクセス権を区別する「?」演算子によって条件を実装しています。
$access=($usereq'streamcloud'?' root':'guest');
順次演算子(,)は、操作番号の真偽をチェックしないので、厳密な意味での論理演算子ではありません。Perlはカンマ演算子を左から右に数えて一番右の操作番号を返す、良い演算子は全てCから連続している。詳しくはCでの使い方を参照して欲しいので、ここでは詳しく説明しない。

1.5 文字演算子の Perl 構文

Perl自体がテキスト処理のために開発されたものです。Perlの文字列演算子には次のようなものがあります。

. 文字連続演算子
x文字列コピー演算子
=~ 変数をパターンルームにバインドする
! ~スキーマコンパートメントに変数をバインドする。

最初の2つの演算子は比較的簡単である。以下はその例です: print 'C'.' a'.' l'x2;# 出力は次のようになります。呼び出し。
最後の2つの演算子は、主にパターン・ルーミングに使用されます。パターン・ルーミングについては、今後詳しい説明がありますので、さっそくその例を見て、どんなことをするのかを理解しておきましょう。

$text='今日は雨です';
print($text=~/rain/)?'です。今日は雨が降っている':'今日は雨が降っていない';
見た例では、変数に必要な文字列が含まれているかどうかを調べることができます。

1.6 代入演算子に関するPerlの構文

代入演算子はC言語とあまり変わりませんが、ここでは様々な種類の代入演算子を紹介します。

=+=-=*=/=%=|=&= となります。
^=~=<=>>=**=. =x=.

1.7 Lvalue のための Perl 構文

 PerlやC言語では、lvalueは代入演算子の左側にある実体を意味する。つまり、lvalueは変数と同じで、値を代入することができます。例えば、Perl のコマンド・ファイルで "Bob"=32 のような文字列に値を代入することはできませんが、これは間違いです! なぜなら "Bob" は lvalue ではないからです。しかし、$Bob に $Bob=32 のように値を代入すると、この文は正確になります! なぜなら、変数 $Bob は lvalue だからです。
Perlでは、意味のあるlvalueは1つの実体を意味するものでしかありません。例えば、以下の最初の文はテーブルの値(つまり値の配列、ただ言い方が違うだけ)をリストアップしており、@color は lvalue です。一方、2番目の文はテーブルの値を3つのスカラー変数に割り当てており、これは lvalue です。

color=($r,$g,$b)です。
($r,$g,$b)=@color;

Perlの代入演算子は、テーブル全体を破棄するのではなく、テーブルの1つ以上の要素に値を代入することでテーブルを破棄することができます。

@times[2,5,9]=(20,40,10);

次の文は、あるテーブルの最初の2つの値を2つのスカラーに割り当て、他のセクターを別のテーブルに割り当てています。

($arg1,$arg2,@reset)=@ARGV;

1.8 表演算子のPerl構文

 Perlには以下の表演算子がいくつかありますが、cにはありません。

は、テーブルオーガナイザー
... スケール演算子
x-tableのコピー演算子

最初に "スカラー変数と配列変数" を紹介したときに、すでにオルガン演算子(セパレータと呼ぶとわかりやすいと思いました)を計画しました。配列の添え字のスケールを作るときに使用したスケール演算子です ! しかし、その効果はこれだけではありません、次の整数目盛りの間の左の操作番号から右の操作番号への戻りとして使うこともできます(振り子の両側の操作番号も含む)ので、注意してください。コマンドファイルでは、スケール操作子を同時に操作して、連続した整数の表を作成している。@digits=0..9;

したがって、値 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) を持つテーブルを作成します。
テーブルコピー演算子は非常に面白いもので、例を見てみましょう。copy_3=(1,2,3)x3; このテーブルは9つの要素を持ち、その値は (1,2,3,1,2,3,1,2,3) どうでしょうか?とても便利でしょう!?

1.9 ファイル演算子のためのPerlの構文

Perlは、ファイルを扱う演算子を大幅に拡張しました。Perlには、ファイルを開かずにその情報をテストできる演算子が少なくとも27個ありますが、残念ながら、PerlはもともとUNIXのものなので、ほとんどの演算子は私たちの人気のあるプラットフォームでは使えません。WIN9X/NTです。しかし、幸いなことに他の4つの演算子すべてが絶対に使えるというわけではなく、その効果は絶大です! 以下は、その4つの演算子です。

以下は、4つの演算子です。-d ファイルがディレクトリであるかどうかをテストします。
-e ファイルが存在するかどうかをテストします。
-s ファイルサイズをテストします。
-w ファイルが書き込み可能かどうかをテストします。

最初の2つの演算子はブール値(つまり真か偽)を返し、3番目の演算子はファイルのサイズを(戻り値のインスタンスとしてバイトで)返します。以下は
使用方法

コピーコード コードは以下の通りです。

if(-e'Perl.exe') 

print'Filesizeis:'-s'Perl.exe'; 

else 

print'Can\'tfindPerl.exe\n'; 

(-w'SomeFile')||die"CannotwritetoSomeFile\n";