第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行目で入力された文字列を
いざスタート!
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文から配列操作までやっていきまーす! 次回記事!