Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

初見では読みづらいPerl

630 views

Published on

Perlの黒魔術の紹介

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

初見では読みづらいPerl

  1. 1. 初見では読みづらいPerl http://twitter.com/CodeHex
  2. 2. 絶対条件
  3. 3. 絶対条件 - 1 #!/usr/bin/env perl ! use strict; use warnings; use v5.10;
  4. 4. 絶対条件 - 2 my $i = 0; ! say $i++; # 0 ! $i = 0; ! say ++$i; # 1
  5. 5. ∼であれば、∼する
  6. 6. ∼であれば、∼する my $true = 1; my $false = 0; ! $true && say “OK!!"; # OK! ! open IN, "file.txt" and my $data = <IN>; say $data;
  7. 7. ∼でなければ、∼する
  8. 8. ∼でなければ、∼する my $true = 1; my $false = 0; ! $false || say "Hi!!"; # Hi!! stat "file.txt" or die "Faild!!";
  9. 9. 範囲演算子
  10. 10. 範囲演算子 my @a = map { chr; } ord('0') .. ord('z'); say join "", @a; # 0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghi jklmnopqrstuvwxyz
  11. 11. 範囲演算子 my @a = ("NM - Foo", "01 - Bar", "011 - Daff", "1 - Baz", "ab - Quux”); ! map { say if (/^d/ .. /-/); } @a; # 01 - Bar # 011 - Daff # 1 - Baz
  12. 12. foreachのようなwhile
  13. 13. my @a = 1..5; my $i = 0; ! while (my $x = $a[$i++]) { say $x; # foreach と同じ動き } foreachのようなwhile
  14. 14. これの逆順案
  15. 15. my @a = 1..5; my $i = @a; # 5 ! while (my $x = $a[--$i]) { say $x; } 逆順案 - 1
  16. 16. 5 4 3 2 1 5 4 3 2 1 ! $i == -6!! 逆順案 - 1
  17. 17.
  18. 18. my @a = 1..5; my $i = @a; ! say $a[-2]; # 4 # [1, 2, 3, 4, 5] # -5 -4 -3 -2 -1 <- 要素番号 理由
  19. 19. my @a = 1..5; my $i = @a; # 5 ! while (my $x = $a[--$i]) { say $x; } 逆順案 - 1 マイナスまでカウントしてしまう
  20. 20. マイナスまでカウント しなければ良い
  21. 21. my @a = 1..5; my $i = @a; # 5 ! while ((my $x = $a[--$i]) && $i >= 0) { say $x; } 逆順案 - 2
  22. 22. 5 4 3 2 1 ! $i == -1!! 逆順案 - 2
  23. 23. foreachでいいじゃん!
  24. 24. でも、この考えを応用すると…
  25. 25. my @a = 1..5; ! while (my $x = shift @a) { say $x; # 1 2 3 4 5 } 応用編 - 1
  26. 26. my @a = 1..5; ! while (my $x = pop @a) { say $x; # 5 4 3 2 1 } 応用編 - 2
  27. 27. Perlは素晴らしい!

×