Приведем текст программы с комментариями:

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";
}
Текст этой программы можно взять здесь.

    Дадим еще небольшие комментарии. В каждой строке нужно напечатать некоторое количество пробелов, которое в предыдущих строках занимают ступени. Затем печатаем горизонтальную составляющую текущей ступени. Ее длина совпадает с номером ступени. Затем перед печатью вертикальной линии снова печатаем пробелы, количество которых должно быть равно длине предыдущих ступеней плюс длина текущей ступени. Потом все повторяется для следующей ступени.