スポンサーサイト

2023.04.20 Thursday
0

    一定期間更新がないため広告を表示しています

    category:- | by:スポンサードリンク | - | - | -

    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
                   12
              3456789
              10111213141516
              17181920212223
              24252627282930
              31      
              << March 2024 >>
              Selected entry
              PR
              Category
              Archives
              Recommend
              Link
              Profile
              Search
              Others
              Mobile
              qrcode
              Powered
              無料ブログ作成サービス JUGEM