我正在编写这个perl程序,并希望根据for循环的值创建一个应该存储在输出文件中的数组。我是这个节目的新手。 这是我的代码
use strict;
use warnings;
open( my $out_fh, ">", "output.txt" ) || die("Cannot open file.\n");
my ( $x, $y, $i, $j, $k, $p, $q );
my ( @Xrow, @b, @b_l, @w );
print("Enter the number of rows:\n");
$p = <STDIN>;
chop($p);
print("Enter the number of columns:\n");
$q = <STDIN>;
chop($q);
$x = 2**$p;
$y = 2**$q;
@Xrow = ( @b, @b_l, @w );
for ( $i = 0; $i < $x * $y; $i = $i + 1 ) {
for ( $j = 0; $j < $x; $j = $j + 1 ) {
for ( $k = 0; $k < $y; $k = $k + 1 ) {
$Xrow[$i] = "$b[$j],$b_l[$j],$w[$k]";
foreach (@Xrow) {
print $out_fh "$_\n";
}
}
}
}
因此输出应该类似于例如p = q = 1
Xrow0 b0 b_l0 w0
Xrow1 b1 b_l1 w0
Xrow2 b0 b_l0 w1
Xrow3 b1 b_l1 w1
所以它应该在没有任何大括号和“=”
的输出文件中打印出来但是我收到这样的错误
Use of uninitialized value in concatenation<.> or string at xyz.pl in line 27
Use of uninitialized value within @b in concatenation<.> or string at xyz.pl in line 27
答案 0 :(得分:2)
您不会在任何地方填充数组,因此它们会保持空白。
但实际上,您不需要数组来获得所需的输出。
其他建议:
我是怎么做到的:
#!/usr/bin/perl
use warnings;
use strict;
open my $OUT, '>', 'output.txt' or die "Cannot open file.\n";
print "Enter the number of rows:\n";
my $p = <STDIN>;
chomp $p;
print "Enter the number of columns:\n";
my $q = <STDIN>;
chomp $q;
my $x = 2 ** $p;
my $y = 2 ** $q;
my $i = 0;
for (my $j = 0; $j < $x; $j = $j + 1) {
for (my $k = 0; $k < $y; $k = $k + 1) {
print {$OUT} "Xrow$i b$k b_l$k w$j\n";
++$i;
}
}