#!/usr/bin/perl

use warnings;
use strict;

use Curses;

my $curses = new Curses;

open(my $fh, "<", $ARGV[0]) or die;

my @file = <$fh>;
my $lines = $#file - 1;

my $w = newpad($#file + 1, $COLS);

for my $i (0 .. $#file)
{
   $w->addstr($i, 0, $file[$i]);
}

my $pointer = 0;

clear;
$w->prefresh($pointer, 0, 0, 0, $LINES - 1, $COLS - 1);

while (my $char = $w->getch)
{
   if ($char eq "j" and $pointer < $lines - $LINES + 2)
   {
      $pointer++;
      $w->prefresh($pointer, 0, 0, 0, $LINES - 1, $COLS - 1);
   }
   elsif ($char eq "k" and $pointer > 0)
   {
      $pointer--;
      $w->prefresh($pointer, 0, 0, 0, $LINES - 1, $COLS - 1);
   }
   elsif ($char eq "q")
   {
      endwin;
      exit(0);
   }
}