Gaiax TechEgg's Blog

非エンジニアがエンジニアを目指すブログ

基礎① 3.Perl基礎をやってみた

第3回目の今回は基本的な四則演算とif文をあつかっていきます!

エンジニア基礎①
1. Perl環境基礎
2. Hello,world!
3. ⭐️Perl基礎⭐️
4. 配列
5. ハッシュ
6. リファレンス
7. サブルーチン
8. 正規表現
9. Amon2 入門 第一部
10. Amon2 入門 第二部

ゴール🏁(めやす:30分)


  • Perlの基礎がわかる
  • 四則演算を使って計算することができる
  • if文を使えるようになる

おさえておきたいこと


変数

変数=データを格納できる箱です。Perlが扱う変数には「スカラ変数」「配列」「連想配列(ハッシュ)」があります。

  • スカラ変数:一つの要素しか入らない箱
  • 配列 / 連想配列複数の要素を格納できる箱

変数の宣言はmyで、変数を扱うときは、変数の前に$をつけます。表すとこんな感じ!

my $hoge;
$hoge = 1;

これは1行目で変数hogeがあることを宣言し、2行目でhogeに1を代入するという意味です。=という演算子は代入を意味します。

my $foo = 1;
$hoge = "perl";

これは1行目で変数fooがあって、それに1を代入し、2行目で変数hogeがあってperlって意味を代入する、という意味です。文字を代入する場合は""で囲いましょう。

my $foo = 1;
print "$foo\n";
print '$hoge\n';

これは1行目はもう何を示すかわかりますね!2行目と3行目は画面に出力しています。""(ダブルクォーテーション)だと、変数の中身が展開されて1と表示、''(シングルクォーテーション)だと全てが出力されるので$hoge\nと表示されます。

以上が変数の入出力でしたー!

標準入力

前回でHello,world!を出力することはできましたよね!今度は入力されたものを受け取って、出力するコードを書きましょう。

my $hoge = <STDIN>;
chomp $hoge;
print $hoge;

1行目で入力された文字列を(=standard in)として受け取って、入力された文字列を変数hogeに代入します。2行目で、入力の際に生じた行末の改行を削除します。3行目で入力した文字列の出力です。

いざスタート!


0. おまじない

#!/usr/bin/env perl
use strict;
use warnings;

この三行がいわゆる「おまじない」といわれるもの。
冒頭に必ずいれましょう!
2行目は厳密な書式を定めたり、未定数の変数を警告してくれて(致命的なミスの発見!)、 3行目は正しくない記述をした際に警告文を出してくれます。(致命的ではないけど正しくないミスの発見!)

1. 四則計算

◼︎数字だけの四則計算

my $hoge = 4;
my $foo  = 2;

print $hoge + $foo;    # 4 + 2 = 6
print $hoge - $foo;    # 4 - 2 = 2
print $hoge * $foo;    # 4 * 2 = 8
print $hoge / $foo;    # 4 / 2 = 2
print $hoge % $foo;    # 4 % 2 = 0
print $hoge ** $foo;   # 4 の 2乗 は 16

%はa÷bのあまりを意味します。

◼︎文字列を含む四則計算

my $hoge = 'perl';
my $foo = 123;
my $bar = $hoge . $foo;          # perl123
print $hoge . $foo . "\n";       # perlperl123

.によって文字列や変数を連結することができます。4行目は改行を入れたい場合は""で囲みましょう。

2. if文

if分は制御構文といいます。2つ以上のものを比較するときに条件を定めて、「真」(=条件が正しい)の場合の出力、「偽」(=条件が正しくない)の場合の出力を決められます。

◼︎基本的なif文

my $hoge = 1;
if ( $hoge == 1 ) {
  print "OK\n";       # 条件が「真」の場合
} else {
  print "NG\n";       # 条件が「偽」の場合
}

1行目はもうわかりますね!
2行目では条件を()内に記してあります。==とは左辺と右辺の内容が正しいということです。
3行目以降は、「変数hogeが1と等しい」という条件に関して真の場合はOKと表示し、偽の場合はNGと表示するという意味です。セミコロンは最後につけなくて大丈夫です!


◼︎数値の比較演算子

数字を用いる場合は以下のような比較演算子を使います。

==       # 右辺と左辺が等しいならば真
!=       # 右辺と左辺が等しくないならば真
<        # 右辺より左辺が小さいならば真
>        # 右辺より左辺が大きいならば真
<=       # 右辺が左辺以上ならば真
>=       # 右辺が左辺以下ならば真


◼︎文字列の比較演算子

文字を用いる場合は以下のような比較演算子を使います。

eq  ==     # equal
ne  !=     # not equal
gt  >      # greater than
ge  >=     # greater equal
lt  <      # less than
le  <=     # less equal

◼︎文字列の比較

先ほどの基本的なif文では数値のみでしたが、文字列の比較もできます!文字列の比較演算子を使います。

my $hoge = 'perl';
if ( $hoge eq 'perl' ) {
    print "OK\n";
} else {
    print "NG\n";
}

◼︎こういう場合はどうなるの?パターン

①数字を文字列の比較演算子でする場合

if ('72' eq 72) {
  print "OK\n";
}

この場合、Perlでは数字を文字列として解釈するので、OKという出力になります!

②数字と文字列の混合の場合

if ('72perl' == 72) {
  print "OK\n";
}

文字列を数値用の比較演算子で比較しようとするとエラーが出ますが、Perlは文字列を無理やり数値として解釈して処理をします。今回は先頭に72という数値が含まれるので、==が成り立ち、真となります。


◼︎複数の条件を提示する場合

my $hoge = 1;
if ( $hoge == 1 ) {
    print "one\n";
} elsif ( $hoge == 2 ) {
    print "two\n";
} elsif ( $hoge == 3 ) {
    print "three\n";
} else {
    print "number\n";
}

elsifで条件をさらにつなげることができます!この場合、出力されるのはoneですね!

◼︎関係演算子

複数の条件を扱いときは関係演算子で表します。

&&    -> かつ
||    -> または

おなじみですね!
&&は両方の条件が真の場合、||は条件のどちらか一方の場合が真ならば真になります。

◼︎関係演算子を用いたif文

my $hoge = 64;
if ( $hoge > 0 && $hoge % 2 == 0 ) {
    print "&&: OK\n";
}
if ( $hoge > 0 || $hoge % 2 == 1 ) {
    print "||: OK\n";
}

この場合の出力は&&: OKになりますね。
2行目は変数hogeが正かつ2で割り切れる条件、5行目は変数hogeが正でかつ1余る条件を示しています。

Perlでif文を用いる場合は if else elsif で表せます!


前回のHello,world!の出力から、if文を出力できるようになると、だいぶ幅が広がった気がしますね!
数値、文字列の場合の条件をうまく使い分けていくのが肝です!
次回はfor文から配列操作までやっていきまーす!
次回記事!

gaiax-techegg.hatenablog.com