Perl脚本无法正常运行

时间:2015-10-07 20:16:56

标签: perl

我什么时候运行这段代码。它不显示任何输出。有人看错了吗? 我试图在输出中显示这个:

A
AA
AAA
AAAB
AAABA
AAABAA
AAABAAA
AAABAAAB

#!/usr/local/bin/perl

$A = 3;
$B = 1;
$i = 1;
$output = "";
$j = 1;

while ($i <= $ARGV[0]) {
 while ($j <= $i) {
if ($A == 0 && $B == 0) {
  $A = 3;
  $B = 1;
}

if ($A > 0) {
  $output.= "A";
  $A--;
}
else {
  $output.= "B";
  $B--;
}

$j++;
 }

 print($output  .  "\n");
  $i++;
}

3 个答案:

答案 0 :(得分:2)

当我使用数字参数(行数)运行它时,它适用于我。

如何简化代码的想法:

#!/usr/bin/perl
use warnings;
use strict;

my $count = shift;
my $A = 3;
my $B = 1;
my $string = q();
$string .= ('A' x $A) . ('B' x $B) while $count > length $string;
print substr($string, 0, $_), "\n" for 1 .. $count;

它使用不同的算法 - 它创建尽可能长的字符串,然后输出部分字符串。

答案 1 :(得分:0)

如果没有SELECT pc.* --select columns from the other tables as needed. FROM `personContact` pc INNER JOIN person p ON pc.ID = p.ID INNER JOIN personDetails pd on pd.ID = p.ID where pc.personzip in (12563, 12522, 10509) -- add more zips as needed @ARGV永远不会运行。

while ($i <= $ARGV[0])是执行脚本时提供的命令行参数的数组。你没有提供任何命令行参数。如果您@ARGV生效,系统会警告您use warnings未初始化。

答案 2 :(得分:0)

ikegami评论开始。程序编译时,您无法传递输入。例如,假设您的文件名为algo.pl。你能用

运行你的程序吗?
 perl algo.pl 10  

这里10是程序的输入值。在程序中,值由$ARGV[0]

检索

所以你的程序看起来像while ($i <= $ARGV[0])

如果您希望传递多个值,例如perl filename.pl 12 data1 data2,请在$ARGV[0] $ARGV[1] $ARGV[2]的数据检索中获取更多信息see here

如果要在执行时使用STDIN

传递输入
use warnings;
use strict;
my $A = 3;
my $B = 1;
my $i = 1;
my $output = "";
my $j = 1;

print "Enter the value: ";
chomp(my $value = <STDIN>);


while ($i <= $value) {
 while ($j <= $i) {
if ($A == 0 && $B == 0) {
  $A = 3;
  $B = 1;
}

if ($A > 0) {
  $output.= "A";
  $A--;
}
else {
  $output.= "B";
  $B--;
}

$j++;
 }

 print($output  .  "\n");
  $i++;
}