perl shift関数とunshift関数

2015.01.25 Sunday 22:19
0

    shift関数とunshift関数
    shift
    shift関数はリスト Array の左端(先頭)から要素をひとつ取り除く。
    書式 shift(Array)

    unshift
    unshift関数はリスト Array の左端(先頭)に新しい値 List を加える。
    書式 unshift(Array, List)



    連想配列(ハッシュ)
    keys関数、values関数とeach関数

    keys
    keys関数はハッシュ Hash に含まれるすべてのキーのリストを返す。
    書式 keys(Hash)

    values
    values関数はハッシュ Hash に含まれるすべての値のリストを返す。
    書式 values(Hash)

    each
    each関数はハッシュ Hash に対して、キーと値の組からなる2要素のリストをひ とつ返す。
    書式 each(Hash)



    特殊変数
    Perl言語で特別な意味を持つ定義済みの変数。
    $_
    入力処理とパターンマッチで、デフォルトの対象となる変数。



    category:perl | by:ittoocomments(0)trackbacks(0) | -

    perl 2次元ハッシュのソート2

    2015.01.25 Sunday 22:18
    0

      ★ハッシュのソート2
      my %foo;
      $foo{Mon} = 10;
      $foo{Tue} = 200;
      $foo{Wed} = 30;
      $foo{Tur} = 1000;
      $foo{Fri} = 20;
      $foo{Sat} = 50;
      $foo{Sun} = 1;
      ------------------------------
      for my $key (keys %foo) {
      print "$key:$foo{$key}¥n";
      }
      ------------------------------

      実行結果(例)
      Mon:10
      Tue:200
      Fri:20
      Tur:1000
      Wed:30
      Sun:1
      Sat:50

      このハッシュについて、キーと値のそれぞれでソートして出力したいのですが、具体的な方法が分かりません。
      2.ハッシュのキーでソートする
      ハッシュのキーでソートするには、for文のハッシュ名の左側に「sort keys」を追加します。

      ------------------------------
      for my $key (sort keys %foo) {
      print "$key:$foo{$key}¥n";
      }
      ------------------------------
      実行結果
      Fri:20
      Mon:10
      Sat:50
      Sun:1
      Tue:200
      Tur:1000
      Wed:30



      4.ハッシュの値でソートする
      ハッシュの値でソートするには、for文のハッシュ名の左側に「sort values」を追加します。
      ------------------------------
      for my $key (sort values %foo) {
      print "$value¥n";
      }
      ------------------------------
      実行結果
      1
      10
      1000
      20
      200
      30
      50

      6.ハッシュを数値でソートする
      4項と5項は数字が期待通りに並んでいません。これはデフォルトのソートが文字列として扱われるためです。
      数値としてソートするには、数値でのソート条件「{$a <=> $b}」を記述します。
      ------------------------------
      for my $value (sort {$a <=> $b} values %foo) {
      print "$value¥n";
      }
      ------------------------------
      実行結果
      1
      10
      20
      30
      50
      200
      1000



      category:perl | by:ittoocomments(0)trackbacks(0) | -

      perl 連想ハッシュのソート

      2015.01.25 Sunday 22:11
      0
        ★ソート 連想ハッシュのソート
        表示の直前まで、年を含んだようにしておくべし

        # 連想配列 あえて、panel順序、日の順序もバラバラにしてる
        57 my %HoH = (
        58 'panel_1' => { '20141203'=>'0' , '20141204'=>'0' , '20141205'=>'0' , '20141206'=>'0' , '20141207'=>'0' , '20141208'=>'0' },
        59 'panel_8' => { '20141208'=>'0' , '20141207'=>'0' , '20141203'=>'0' , '20141204'=>'0' , '20141206'=>'0' , '20141205'=>'0' },
        60 'panel_6' => { '20141208'=>'0' , '20141207'=>'0' , '20141203'=>'0' , '20141204'=>'0' , '20141206'=>'0' , '20141205'=>'0' },
        61 'panel_3' => { '20141208'=>'0' , '20141207'=>'0' , '20141203'=>'0' , '20141204'=>'0' , '20141206'=>'0' , '20141205'=>'0' },
        62 'panel_4' => { '20141205'=>'0' , '20141206'=>'0' , '20141205'=>'0' , '20141206'=>'0' , '20141203'=>'0' , '20141204'=>'0' },
        63 );


        78 # ソートされた全体を出力
        79 foreach my $family ( sort keys %HoH ) {
        80 print "$family: { ";
        81 for my $role ( sort keys %{ $HoH{$family} } ) {
        82 print "$role=$HoH{$family}{$role} ";
        83 }
        84 print "}¥n";
        85 }

        出力 panelでもソートしてるし、中の日でもソートしてる
        panel_1: { 20141203=0 20141204=0 20141205=0 20141206=0 20141207=0 20141208=0 }
        panel_3: { 20141203=0 20141204=0 20141205=0 20141206=0 20141207=0 20141208=0 }
        panel_4: { 20141203=0 20141204=0 20141205=0 20141206=0 }
        panel_6: { 20141203=0 20141204=0 20141205=0 20141206=0 20141207=0 20141208=0 }
        panel_8: { 20141203=0 20141204=0 20141205=0 20141206=0 20141207=0 20141208=0 }


        category:perl | by:ittoocomments(0)trackbacks(0) | -

        perl 2次元ハッシュ(連想配列)への追加方法

        2015.01.25 Sunday 19:56
        0
          ★2次元ハッシュ(連想配列)への追加方法
          my %hash = (
          A => { a => 1, b => 2, c => 3 },
          B => { d => 4, e => 5, f => 6 },
          );
          $hash{'C'} = { a => 1, b => 2, c => 3 }; ★追加
          print Dumper %hash;

          以下のように出力される
          $VAR1 = 'A';
          $VAR2 = {
          'c' => 3,
          'a' => 1,
          'b' => 2
          };
          $VAR3 = 'C';
          $VAR4 = {
          'c' => 3,
          'a' => 1,
          'b' => 2
          };
          $VAR5 = 'B';
          $VAR6 = {
          'e' => 5,
          'd' => 4,
          'f' => 6
          };


          ちなみに、¥(円、逆スラッシュ)を前につけると以下になる
          print Dumper ¥%hash;
          $VAR1 = {
          'A' => {
          'c' => 3,
          'a' => 1,
          'b' => 2
          },
          'C' => {
          'c' => 3,
          'a' => 1,
          'b' => 2
          },
          'B' => {
          'e' => 5,
          'd' => 4,
          'f' => 6
          }
          };
          category:perl | by:ittoocomments(0)trackbacks(0) | -

          perl 配列

          2015.01.25 Sunday 15:56
          0

            配列と連想配列とリファレンス

            Perl | 配列と連想配列とリファレンスを含むブックマーク

            配列と連想配列(ハッシュ)と配列リファレンスとハッシュリファレンスの書き方が全部異なるのが、Perl を異界の呪文に見せている原因だと思います。正直自分も時々忘れますし、全部 Array で済む PHP のほうが最近は好きです(PHP5の話、PHP4はたぶん一生使いません)。

            関数内で中身を書き換えたいときはリファレンスにして渡します。配列や連想配列(ハッシュ)のまま関数に渡すと値が全部展開されてコピーされるので、メモリーもすごく食うし、時間もすごくかかります。通常はリファレンスで扱ったほうがいいと思います。

            ただ、リファレンスを配列や連想配列(ハッシュ)として扱いたいときは @$array や %$hash とデリファレンスしてやらなければならないので、これはこれで面倒くさいですが・・・。

            結論:Perl は使うな(笑)

            ちなみにスカラーとスカラーリファレンス、関数と関数リファレンスもあります(汗)。リファレンスは C 言語のポインターのようなものと考えるとすっきり理解できます(使い方もほぼ一緒)。
            配列

            my @array = ('a', 'b', 'c');
            my $val1 = $array[0];
            push(@array, 'd');

            連想配列(ハッシュ)

            my %hash = ('a' => 1, 'b' => 2, 'c' => 3);
            my $val1 = $hash{'a'};

            配列リファレンス

            my $array = ['a', 'b', 'c'];
            my $val1 = $array->[0];
            push(@$array, 'd');

            または

            my @array1 = ('a', 'b', 'c');
            my $array2 = ¥@array1;
            my $val1 = $array2->[0];

            ハッシュリファレンス

            my $hash = {'a' => 1, 'b' => 2, 'c' => 3};
            my $val1 = $hash->{'a'};

            または

            my %hash1 = ('a' => 1, 'b' => 2, 'c' => 3);
            my $hash2 = ¥%hash1;
            my $val1 = $hash2->{'a'};

            category:perl | by:ittoocomments(0)trackbacks(0) | -

            ad
            Calender
                  1
            2345678
            9101112131415
            16171819202122
            23242526272829
            3031     
            << July 2017 >>
            Selected entry
            PR
            Category
            Archives
            Recent comment
            • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
              66hills
            • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
              ssd
            • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
              max
            • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
              DOM
            • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
              DOM
            • コンピュータ業界の根本的な変化
              cloud
            • コンピュータ業界の根本的な変化
              Dellの仮想化
            • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
              えちごや
            • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
              touch
            • マクドナルドでYahoo BBモバイルポイント 公衆無線LANサービスがつながらない
              bob77777
            Recent trackback
            • スマートフォンの法人活用例
              無線LANネットのブログ
            • Yahoo!オークションからのアフィリエイト収入が一気に70%減になってしまい涙目になってる話
              特選情報
            Recommend
            Link
            Profile
            Search
            Others
            Mobile
            qrcode
            Powered
            無料ブログ作成サービス JUGEM