Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ドキドキPerl調査団 Part1

AnaTofuZ
March 17, 2018

ドキドキPerl調査団 Part1

Okinawa.pm #6の発表資料です

AnaTofuZ

March 17, 2018
Tweet

More Decks by AnaTofuZ

Other Decks in Technology

Transcript

  1. υΩυΩPerlௐࠪஂ
    Part1
    @AnaTofuZ
    Okinawa.pm #6

    View Slide

  2. View Slide

  3. Θͨ͠
    Ͱ͢

    View Slide

  4. • Ξφάϥ(@AnaTofuZ)
    • ླྀେ@ฒྻ৴པݚ(u͞Μͷޙഐ)
    • Perl͕޷͖ɹʢόΠτઌ͸Ruby)
    • झຯ͸ΫιϦϓ
    ΞφάϥͰ͢

    View Slide

  5. ͋Δ೔

    View Slide

  6. ;ͱࢥ͏

    View Slide

  7. Perl1.0͸
    ࣮ࡏ
    ͨ͠ͷ͔

    View Slide

  8. Α͘Θ͔ΔPerl
    • Perl1.0 —ɹ͋ͬͨΒ͍͠
    • Perl2 - Տ໺ઌੜ͕ॳΊͯPerlͱग़ձͬͨ࣌
    • Perl3 ҧ͍͕෼͔ΒΜ
    • Perl4 Տ໺ઌੜ͕ຊΛग़ͨ͠
    • Perl5 զʑͷ஌ͬͯΔPerl

    View Slide

  9. Α͘Θ͔ΔPerl
    • Perl1.0 —ɹ͋ͬͨΒ͍͠
    • Perl2 - Տ໺ઌੜ͕ॳΊͯPerlͱग़ձͬͨ࣌
    • Perl3 ҧ͍͕෼͔ΒΜ
    • Perl4 Տ໺ઌੜ͕ຊΛग़ͨ͠
    • Perl5 զʑͷ஌ͬͯΔPerl
    Perl1

    View Slide

  10. Α͘Θ͔ΔPerl
    • Perl1.0 —ɹ͋ͬͨΒ͍͠
    • Perl2 - Տ໺ઌੜ͕ॳΊͯPerlͱग़ձͬͨ࣌
    • Perl3 ҧ͍͕෼͔ΒΜ
    • Perl4 ͋ͬͨΒ͍͠
    • Perl5 զʑͷ஌ͬͯΔPerl
    ΋͸΍
    ਆ࿩

    View Slide

  11. Perl 1.0 [ݕࡧ]

    View Slide

  12. https://bitbucket.org/chastai/perl-1.0

    View Slide

  13. View Slide

  14. ࠓͰ΋
    ಈ࡞

    View Slide

  15. Perl5ͷσʔλܕ
    • εΧϥʔ
    • ഑ྻ
    • ϋογϡ
    • ϦϑΝϨϯε

    View Slide

  16. Perl1ͷσʔλܕ
    • εΧϥʔ
    • ഑ྻ
    • ϋογϡ
    • ϦϑΝϨϯε

    View Slide

  17. Perl1ͷσʔλܕ
    • εΧϥʔ
    • ഑ྻ
    • ϋογϡ
    • ϦϑΝϨϯε

    View Slide

  18. Perl1ͷσʔλܕ
    • εΧϥʔ
    • ഑ྻ + ࿈૝഑ྻ

    View Slide

  19. Perl1ͷσʔλܕ
    • εΧϥʔ
    • ഑ྻ + ࿈૝഑ྻ

    View Slide

  20. Perl1ͷσʔλܕ
    • String
    • String഑ྻ + ࿈૝഑ྻ

    View Slide

  21. Perl1Ͱͳ͍΋ͷ
    • ൣғԋࢉࢠ
    • foreach (ग़དྷͳ͘͸ͳ͍)
    • ଞϞδϡʔϧ
    • use
    • my,our,local…

    View Slide

  22. Perl1Ͱ͋Δ΋ͷ
    • ஔ׵
    • ਖ਼نදݱ
    • Ϧετૢ࡞ (shift,unsift,pop,push)
    • @_
    • จࣈྻԋࢉࢠ
    • chop
    • each

    View Slide

  23. αϒϧʔνϯ΋͋Δͧ!!
    sub MAX {
    $max = pop(@_);
    while ($foo = pop(@_)) {
    $max = $foo if $max < $foo;
    }
    $max;
    }
    ...
    $bestday = do MAX($mon,$tue,$wed,$thu,$fri);

    View Slide

  24. for loop΋ग़དྷΔͧ!!
    #!/usr/bin/env perl
    @array = (1,2,3,4,5,6,7,8,9,10);
    for ( $i = 0; $i < 10; $i++){
    print $array[$i] ."\n";
    }

    View Slide

  25. for loop (੒ޭ)
    #!/usr/bin/env perl
    @array = (1,2,3,4,5,6,7,8,9,10);
    for ( $i = 0; $i < 10; $i++){
    print $array["$i"] ."\n";
    }

    View Slide

  26. ऑ఺
    • Ͳ͏΋γϯϘϧςʔϒϧʹΞΫηεͰ͖ͳ͍
    • αϒϧʔνϯʹ഑ྻΛ౉ͤͳ͍

    (ग़དྷͳ͘͸ͳ͍)
    • ίϯύΠϧΤϥʔͷϝοηʔδ͕ແͯ͘ݫ͠
    ͍

    View Slide

  27. օ͞Μ
    ॻ͍ͯΈͨ͘ͳΓ·ͤΜ͔?

    View Slide

  28. View Slide

  29. View Slide

  30. array_pop_shift.pl
    #!/usr/bin/env perl
    @names = ('Alice','Bob','Chris');
    print pop @names . "\n";
    print shift @names . "\n";

    View Slide

  31. array_push_unshift.pl
    #!/usr/bin/env perl
    @names = ('Alice','Bob','Chris');
    push(@names,"Diana");
    unshift(@names,"Eve");
    for ($i = 0; $i < $#names+1; $i++){
    print $names["$i"]."\n";
    }

    View Slide

  32. View Slide

  33. ͦΕͬΆ͘
    #!/usr/bin/env perl
    $my_profile['name'] = 'AnaTofuZ';
    $my_profile['age'] = 21;
    $my_profile['food'] = 'apple';
    print $my_profile["name"] . "\n";
    print $my_profile["age"] . "\n";
    print $my_profile["food"] . "\n";

    View Slide

  34. !?
    apple
    apple
    apple

    View Slide

  35. ਖ਼ղྫ
    #!/usr/bin/env perl
    $my_profile{'name'} = 'AnaTofuZ';
    $my_profile{'age'} = 21;
    $my_profile{'food'} = 'apple';
    print $my_profile{"name"} . "\n";
    print $my_profile{"age"} . "\n";
    print $my_profile{"food"} . "\n";

    View Slide

  36. ͜Ε΋ok
    #!/usr/bin/env perl
    ($my_profile{'name'},$my_profile{'age'},
    $my_profile{'food'}) = ( 'AnaTofuZ',21,'apple');
    print $my_profile{"name"} . "\n";
    print $my_profile{"age"} . "\n";
    print $my_profile{"food"} . "\n";

    View Slide

  37. View Slide

  38. • .n
    #!/usr/bin/env perl
    $my_profile{'name'} = 'AnaTofuZ';
    $my_profile{'age'} = 21;
    $my_profile{'food'} = 'apple';
    @keys = keys(my_profile);
    for ($i = 0; $i < $#keys+1 ; $i++){
    print $keys[$i] . "\n";
    }
    $my_profile{'age'} = "";
    if ( $my_profile{'age'} == ""){
    print "Age is not exists (͋Δ͚Ͳ)\n";
    } else {
    print "Age is exitst";
    }

    View Slide

  39. hash_func.plͰൃ֮ͨ͠໰୊఺
    • delete͕ͳ͍
    • undef͕ͳ͍
    • exist΋ͳ͍
    • ϋογϡͰ͸ͳ͋͘͘·Ͱศརͳ഑ྻ

    (ͨͩ͠഑ྻͷshiftͳͲ͸࢖͑ͳ͍)

    View Slide

  40. Perl1.0ͷ࿈૝഑ྻ
    • ࿈૝഑ྻ͸͋͘·Ͱࢼݧతӡ༻ͩͬͨ
    • keys()ͳͲ͸؀ڥม਺ͷऔಘͰར༻Λ૝ఆ
    • ͪͳΈʹιʔτॱ͸ࣙॻॱ

    View Slide

  41. ͍ۤ͠……

    View Slide

  42. ݁࿦
    • Perl5を使おう

    View Slide