
$head;
$mid1;
$mid2;
$tail;


# ===============Link of Chain===============
sub link{
my @link{

    $data;
    $next;
    $prev;
    $id;

    # Data Table Here

}
return $link;
}
# -----------------------------------------

# =============Constructor=================
sub new{
    
    my($dat, $ide, $nex, $pre);

    # shift data
    $dat = shift;
    $ide = shift;
    $nex = shift;
    $pre = shift;

    $head{$data} = $dat;  
    $head{$id}   = $ide;
    $head{$next} = $nex;
    $head{$prev} = $pre;

}
# ----------------------------------------


# --Manipulate by id
sub insertLink{
    
    my($ide) = shift;
    find(#attribute name);

}

sub removeLink{

    my($ide) = shift;

}
# ----------
# -----------------------------------------
# ===========Primatives===================




# ============ Methods ====================

# --Pop/Push first element

sub pop{   

    #check $next && $prev
    #reconnect in neccessary

}

sub push{ 

    #check id
}
# -----------

sub find{

    my $curr= shift;
    my $attrib = shift;
    my $value = shift;
    if($curr{$attrib} gt $value){
	

    }
    else if($curr{$attrib} lt $value){
	get next;
    }
    
    else if($curr{$attrib}) eq $value){
	return;
    }
    
    #mult functions
    #one for each attribute

}


# -----------------------------------------
