8907


255までの10進数を2進数に変換する命令は分かりましたが、open関数でテキストファイルに書き込むことができません。  
繰り返し文の二重化を避けるため、foreach文をサブルーチンにして、テキストファイルを作成するときは、サブルーチンから参照するようにしました。  
結果、参照は可能ですが、テキストファイルには何も反映されませんでした。

[code]

    sub math {
        foreach my $c ( 0..255 ) {
            my $str3 = sprintf('%b', $c);
            print $c , ' -> ' , $str3 , "\n";
        }
    }
    
    
    my @line = &math;
    open (OUT, ">>index.txt") or die "cannot open texfile : $!\n";
    foreach (@line) {
        print OUT @line;
    }
    
    close(OUT);
    
[/code]


CC BY-SA 3.0
2015-04-08T09:08:28.790
8905
2015-05-21T02:29:11.680
2015-04-08T10:01:07.620
5044
9223
question
perl
10進数255までを2進数に変換し、新規作成したテキストファイルに書き込む


> 結果、参照は可能ですが、テキストファイルには何も反映されませんでした。

参照してません。print で画面に出力しているだけです。関数 math から何も戻り値を返してないです。

[code]

    use strict;
    use warnings;
    
    sub math {
      my @a; 
      push @a, sprintf("%d -> %b\n", $_, $_) for ( 0..255 );
      @a
    }
    
    my @line = &math;
    open (my $f, ">>", "index.txt") or die "cannot open texfile : $!\n";
    print $f $_ for @line;
    close($f);
    
[/code]

> 繰り返し文の二重化を避けるため、foreach文をサブルーチンにして、テキストファイルを作成するときは、サブルーチンから参照するようにしました。

`繰り返し文の二重化`が良く分かりませんが、この程度の処理ならば関数化しなくても良いかと。

[code]

    use strict;
    use warnings;
    
    open (my $f, ">>", "index.txt") or die "cannot open texfile : $!\n";
    printf $f "%d -> %b\n", $_, $_ for ( 0..255 );
    close($f);
    
[/code]


CC BY-SA 3.0
2015-04-08T09:21:43.710
8907
2015-04-08T12:38:17.067
2015-04-08T12:38:17.067
440
440
8905
answer


いくつかの問題があるように見えますが，今回のような場合だと内容の確認のために use Data::Dumper をして，my @line = &math;
のあとに print Dumper \@line をして @line の内容を確認するのが良いかと思います．

[code]

    my @line = &math;
    # @line は期待するものが入っているのかを確認する (print debug)
    print Dumper \@line;
    
[/code]


CC BY-SA 3.0
2015-05-21T02:29:11.680
10444
2015-05-21T02:29:11.680
4030
8905
answer