Приведем текст программы с комментариями:
print "Задайте количество ступеней: "; $kol=<STDIN>; for ($i=1;$i<=$kol;$i++) { # Пропуск позиций, занятых предыдущими ступенями. $k+=$i-1; for ($j=1;$j<=$k;$j++) { print " "; } # Печать горизонтальной ступени. # Ее длина равна номеру ступени. for ($j=1;$j<=$i;$j++) { print "-"; } print "\n"; # Пропуск позиций, занятых предыдущими ступенями и # текущей ступенью. for ($j=1;$j<=$i+$k;$j++) { print " "; } # Печать вертикальной части ступени. print "|\n"; }
Дадим еще небольшие комментарии. В каждой строке нужно напечатать некоторое количество пробелов, которое в предыдущих строках занимают ступени. Затем печатаем горизонтальную составляющую текущей ступени. Ее длина совпадает с номером ступени. Затем перед печатью вертикальной линии снова печатаем пробелы, количество которых должно быть равно длине предыдущих ступеней плюс длина текущей ступени. Потом все повторяется для следующей ступени.