我很困惑如何使用PERL连续并重复一个角色。请帮助我。我需要使用TCL打印金字塔。以下是我的代码。
Tcl
set height 10
set spaceChar " "
set pyramidChar ^
for {set i 1} {$i <= $height} {incr i} {
set y "concat {$spaceChar *($height - $i)} {$pyramidChar * $i} "
puts $y
}
PERL&lt;哪个有用&gt;
print "Please Enter Pyramind Height:";
my $height = <>; chomp($height); # strip of new lines
my $char='^';
for(my $i=1; $i<=$height; ++$i){
print ' ' x ($height-$i) . $char x (2*$i-1), "\n";
答案 0 :(得分:2)
你错过了必须使用expr
命令完成算术的事实。另外,perl .
=&gt; tcl append
和perl x
=&gt; tcl string repeat
perl的翻译是
for {set i 1} {$i <= $height} {incr i} {
puts [string cat [string repeat " " [expr {$height - $i}]] [string repeat $char [expr {$i*2-1}]]]
}
虽然使用所有嵌套括号很难读取长行的Tcl代码。也许:
for {set i 1} {$i <= $height} {incr i} {
set indent [string repeat " " [expr {$height - $i}]]
set tier [string repeat $char [expr {$i*2-1}]]
puts "$indent$tier"
}
答案 1 :(得分:1)
concat是一个列表运算符,而不是字符串运算符。
perl中的x
运算符重复一个字符串。您无法将其转换为Tcl中的*
。您需要使用string repeat命令。
要在Tcl中连接字符,只需将它们放在一起,例如
set y "[string repeat { } 5][string repeat {^} 2]"
我在这里使用引号是为了清楚 - 在这种情况下它们并不是真的必要。或者使用string cat命令。
set y [string cat [string repeat { } 5][string repeat {^} 2]]