すぐわかるPerlでPerlを学ぶ(その2)

すぐわかるPerl (Software Technology)

すぐわかるPerl (Software Technology)

今日は三章から。これも簡単なのでチャキチャキ進めます。

第三章

条件分岐(if)
if (bCondition1)
{
  // bCondition1が成立する場合に実行
}
elsif (bCondition2)
{
  // bCondition1==falseで,bCondition2==trueの場合に実行
}
elsif (bCondition3)
{
  // bCondition1,2==falseで,bCondition3==trueの場合に実行
}
else
{
  // 上記全てに該当しない場合に実行
}

elsifは結構間違いそうなので備忘。

論理演算子とビット演算子

これも基本的には多言語とあまり差異はありません。

演算子 役割
and 論理積
or 論理和
xor 排他的論理和
& ビット単位の論理積
*1 ビット単位の論理和
^ ビット単位の排他的論理和
itotto@www > cat optest.pl
#!/usr/bin/perl

$left  =  8; #  8 = 0x0100
$right = 12; # 12 = 0x0110

if ( ( ($left + $right) > 20 ) and (($left - $right) < 0 ) )
{
  # $left + $right >20 であり , かつ , $left - $right < 0の場合に実行
}
elsif (( ($left + $right) > 20 ) or (($left - $right) < 0 ))
{
  # $left + $right >20 であり , もしくは , $left - $right < 0の場合に実行
}

print("1.\t");
print($left & $right);
print("\t<-ビット論理積演算\n2.\t");
print($left | $right);
print("\t<-ビット論理和演算\n3.\t");
print($left ^ $right);
print("\t<-ビット排他論理和算\n");

itotto@www > ./optest.pl 

1.      8       <-ビット論理積演算
2.      12      <-ビット論理和演算
3.      4       <-ビット排他論理和算

itotto@www > 
文字列の比較

perlでは==や!=は数値の比較用の演算子なので、文字列の比較には使えません。
文字列比較演算子は以下のとおり。

演算子 意味
$x lt $y $xは$yよりも小さい - less than
$x gt $y $xは$yよりも大きい - greater than
$x le $y $xは$y以下である - less than or equal
$x ge $y $xは$y以上である - greater than or equal
$x eq $y $xと$yは等しい - equal
$x ne $y $xと$yは等しくない - not equal


演算子の違いをサンプルで見てみます。

itotto@www > cat strcomp.pl

#!/usr/bin/perl

$str1 = "hoge";
$str2 = "HOGE";

print("str1 = $str1\n");
print("str2 = $str2\n\n");

if ($str1 == $str2)
{
        print("str1 == str2\n");
}
else
{
        print("str1 != str2\n");
}

if ($str1 eq $str2)
{
        print("str1 eq str2\n");
}
else
{
        print("str1 ne str2\n");
}

itotto@www > ./strcomp.pl

str1 = hoge
str2 = HOGE

str1 == str2
str1 ne str2

itotto@www >
true or false?

0と""(空文字)はfalseでそれ以外は全てtrue。


もっといけると思ったのにもうこんな時間...。そんなわけで続きは明日。

*1:はてなの書式の都合上全角にしてますがソース上では半角で記載します