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

シェアする

  • このエントリーをはてなブックマークに追加




blog2.md


1. Perl 入学式 2 回目

  • 前回の復習

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

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

  • 講義&実習

    • スカラー変数

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

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

    • 四則演算

      #!/usr/bin/env perl use 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 perl my $foo = 'hoge'; my $bar = 123; my $baz = $foo . $bar;

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

    • 計算

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

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

      #!/usr/bin/env perl use 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 perl use 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 361 68 16:29 2019 calc.pl -rw-r--r-- 1 root root 102 68 15:21 2019 compare.pl -rw-r--r-- 1 root root 147 68 14:09 2019 hello.pl -rw-r--r-- 1 root root 166 68 16:16 2019 hello.stdin.pl -rw-r--r-- 1 root root 185 68 15:39 2019 sansuu1.pl -rw-r--r-- 1 root root 152 68 15:53 2019 sansuu2.pl -rw-r--r-- 1 root root 271 68 14:25 2019 sclar_practice.pl -rw-r--r-- 1 root root 932 68 15:16 2019 text.pl

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

      ls -l | perl -ape 's/^/aaa /' aaa 合計 32 aaa -rw-r--r-- 1 root root 361 68 16:29 2019 calc.pl aaa -rw-r--r-- 1 root root 102 68 15:21 2019 compare.pl aaa -rw-r--r-- 1 root root 147 68 14:09 2019 hello.pl aaa -rw-r--r-- 1 root root 166 68 16:16 2019 hello.stdin.pl aaa -rw-r--r-- 1 root root 185 68 15:39 2019 sansuu1.pl aaa -rw-r--r-- 1 root root 152 68 15:53 2019 sansuu2.pl aaa -rw-r--r-- 1 root root 271 68 14:25 2019 sclar_practice.pl aaa -rw-r--r-- 1 root root 932 68 15:16 2019 text.pl

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

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

      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 perl use 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 perl use 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"; }

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


シェアする

  • このエントリーをはてなブックマークに追加

フォローする