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

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);