I have created pagination using the following code it works but does not look graceful as it displays links for all 103 pages what I need help for is to make it compact like : [First][Prev][1][2][3][4][5][6]...[103][Next][last], I have looked at perl pagination modules @ cpan but there aren't enough examples for a guy of my level to use them.

# Count how many rows are there in a table, so that we can use it for $pagenum. Change tableName   
my $sql = qq!SELECT COUNT(*) from "Orders" !;  
my $sth = $dbh->prepare ("$sql");  
$sth->execute() || quit();  
my @row = $sth->fetchrow_array;     #  $row[0]  will be having number of rows value   
# Setting  offset, limit and page number . You can change according to your need   
my $offset = 0;  
my $limit = 8;  
my $pagenum = ceil($row[0]/$limit);  
# Assigning value to $offset as 0 or whatever will be the $pagenum i.e. 1 or 2 ....   
$offset=param('page')? $limit*param('page') :0;  
# Get the data  
 $sql = qq!SELECT  
                 a."OrderID", b."CompanyName" AS "CustomerName",   
                 c."FirstName"::text || ' ' ||c."LastName"::text AS "EmployeeName",  
                 a."OrderDate"::DATE, a."RequiredDate"::DATE, a."ShippedDate"::DATE,  
                 d."CompanyName" AS "ShipVia", a."Freight", a."ShipName",   
                 a."ShipAddress", a."ShipCity", a."ShipRegion",  
                 a."ShipPostalCode", a."ShipCountry"   
                 "Orders" a, "Customers" b, "Employees" c, "Shippers" d  
                 a."CustomerID" = b."CustomerID" AND  
                 a."EmployeeID" = c."EmployeeID" AND  
                 a."ShipVia"    = d."ShipperID"  
             ORDER BY 1  
             LIMIT $limit OFFSET $offset !;  
$sth->execute() || quit();  
.... then html stuff skiped....  
# Showing page number with link  
 my $first_page = $pagenum - $pagenum ;  
 my $last_page = $pagenum - 1;  
 $pagenum = $pagenum - 1;  
print q(<ul class="tsc_pagination tsc_paginationA tsc_paginationA09">);  
print qq(<li><a href='vieword.pl?page=$first_page'>First</a></li>);  
for my $i (0 .. $pagenum)  
    print qq(<li><a href='vieword.pl?page=$i'>$i</a></li>);  
print qq(<li><a href='vieword.pl?page=$last_page'>Last</a></li>);  
print q(</ul>);

Your help as usual will be much appreciated.

Many thanks !