Приведем текст программы с комментариями:
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";
}
Дадим еще небольшие комментарии. В каждой строке нужно напечатать некоторое количество пробелов, которое в предыдущих строках занимают ступени. Затем печатаем горизонтальную составляющую текущей ступени. Ее длина совпадает с номером ступени. Затем перед печатью вертикальной линии снова печатаем пробелы, количество которых должно быть равно длине предыдущих ступеней плюс длина текущей ступени. Потом все повторяется для следующей ступени.