Perl入学式 in大阪 第2回 〜構文基礎編〜(まとめ)(逐次追記していきます。)(2019/06/09)

2023年10月22日

<!DOCTYPE html>



blog2.md


1. Perl 入学式 2 回目

  • 前回の復習

    • Hello World を画面に出力してみよう♪
      #!/usr/bin/env perluse strict; use warnings;

      上記おまじない三行は必ず入れるようにする。
      perl -wc program.pl とすると構文チェックをしてくれる。
      -wc を行わなくてもおまじないが書いてあるのでプログラム実行時に -wc を行ったときの様なメッセージをプログラム実行時に表示してくれる。

  • 講義&実習

    • スカラー変数

      print"Hello, World!\n"; my $foo; $foo = 'tomcha';

      "" で囲むと制御文字を認識して処理してくれる。
      " で囲むとそのままの文字として認識し制御文字などそのまま出力される。

    • 四則演算

      #!/usr/bin/env perluse strict; use warnings; my $i = 5 + 3; my $j = 10 % 3; print"5 + 3 = $i\n"; print"10 / 3 のあまり $j\n"; my $foo = 4; my $bar = 2; my $result; $result = $foo + $bar; print'$foo + $bar = '; print"$result\n"; $foo = 100; $bar = 2; $result = $foo - $bar; print'$foo - $bar = '; print"$result\n"; $foo = 100; $bar = 2; $result = $foo ** $bar; print'$foo べき乗 $bar = '; print"$result\n"; $foo = 100; $bar = 2; $result = $foo / $bar; print'$foo ÷:bar = '; print"$result\n"; my $min = 150; my $hour; $result = $min % 60; $hour = ( $min - $result ) / 60; print"$hour 時間 $result 分\n"; # 簡略的な演算方法 $foo = 4; $foo = $foo % 3; print"$foo\n"; $foo = 4; $foo %= 3; print"$foo\n"; # インクリメント・デクリメント $foo = 100; $foo++; print"$foo\n"; $foo--; print"$foo\n"; # 後置・前置 $foo++; print"$foo\n"; --$foo; print"$foo\n";

      べき乗計算や加減乗除など普通の計算式を書く事が出来る。

    • 文字列連結

      #!/usr/bin/env perlmy $foo = 'hoge'; my $bar = 123; my $baz = $foo . $bar;

      . ( ドット ) を用いる事によって文字同士を連結させて表示させることが出来る。

    • 計算

      #!/usr/bin/env perlprint1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10; print"\n"; print100 - 200; print"\n"; print1000 + ( 1000 * 0.08 ); print"\n"; print5 * 2 * 3.14; print"\n";

      変数を用いない色々な計算方法。

      #!/usr/bin/env perluse strict; use warnings; my $pizza = 10; print'$pizza / 5' . "\n"; print $pizza / 5; print"\n"; print $pizza % 5; print"\n";

      計算式を表示する方法。

    • 標準入力

      print"Your Name ?"; my $name = <STDIN>; chomp $name; print $name . "!\n"; print"Your OS ?"; my $name = <STDIN>; chomp $name; print $name . " is useful OS!\n";

      STDIN は, 最初に全部入力を受け取ってから処理される。

      #!/usr/bin/env perluse strict; use warnings; print"num1?"; my $str1 = <STDIN>; chomp $str1; print"num2?"; my $str2 = <STDIN>; chomp $str2; print"tashizan : "; print $str1 + $str2; print"\n"; print"hikizan : "; print $str1 - $str2; print"\n"; print"kakezan : "; print $str1 * $str2; print"\n"; print"warizan : "; print $str1 / $str2; print"\n";

      標準入力による加減乗除。

      ls -l 合計 32 -rw-r--r-- 1 root root 3616816:292019 calc.pl -rw-r--r-- 1 root root 1026815:212019 compare.pl -rw-r--r-- 1 root root 1476814:092019 hello.pl -rw-r--r-- 1 root root 1666816:162019 hello.stdin.pl -rw-r--r-- 1 root root 1856815:392019 sansuu1.pl -rw-r--r-- 1 root root 1526815:532019 sansuu2.pl -rw-r--r-- 1 root root 2716814:252019 sclar_practice.pl -rw-r--r-- 1 root root 9326815:162019 text.pl

      コマンドラインの標準入出力の結果を標準出力に渡して加工する。

      ls -l | perl -ape 's/^/aaa /' aaa 合計 32 aaa -rw-r--r-- 1 root root 3616816:292019 calc.pl aaa -rw-r--r-- 1 root root 1026815:212019 compare.pl aaa -rw-r--r-- 1 root root 1476814:09 2019 hello.pl aaa -rw-r--r-- 1 root root 1666816:162019 hello.stdin.pl aaa -rw-r--r-- 1 root root 1856815:392019 sansuu1.pl aaa -rw-r--r-- 1 root root 1526815:532019 sansuu2.pl aaa -rw-r--r-- 1 root root 2716814:252019 sclar_practice.pl aaa -rw-r--r-- 1 root root 9326815:162019 text.pl

      先頭を aaa に置き換えて表示する。

      ls -l | perl -anE 'say $F[8]'20192019201920192019201920192019

      8 行目を抜き出す。

      ls -l | perl -anE 'say $F[9]' calc.pl compare.pl hello.pl hello.stdin.pl sansuu1.pl sansuu2.pl sclar_practice.pl text.pl

      9行目を抜き出す。

    • 条件分岐 ( if 文 )

      my $foo = <STDIN>; chomp $foo; if( $foo == 1 ) { print"OK\n"; } else { print"NG\n"; }

      標準入力によって処理を分ける。
      chomp は必ず入れるようにする。
      ↑ 改行が認識されてうまく判定が行えない場合がある。

      #!/usr/bin/env perluse strict; use warnings; my $answer = "perl"; print"何か文字を入力?"; my $str = <STDIN>; chomp $str; if( $str eq $answer ) { print"OK\n"; } else { print"NG\n"; }

      文字列比較を行う場合には eq'' を使って比較を行う。

      #!/usr/bin/env perluse strict; use warnings; my $answer = 10; my $user = <STDIN>; chomp $user; if( $answer == $user ) { print"OK\n"; } elsif( $user > $answer && $user - $answer <= 5 ) { print"near too big\n"; } elsif( $user > $answer ) { print"too big\n"; } elsif( $user < $answer && $user - $answer <= 5 ) { print"near too small\n"; } else { print"to small\n"; }

      数当てゲーム、ユーザの入力した数値によって答えの数値に大きいか小さいかヒントを与えるプログラム。


perl