sub subA { # ... # generate array; # here be dragons, an' arrays an' pushes an' references # an' lots of dereferencing happens here, me lad. # ... return \@array; } sub subB { my $chart_widget = shift; my $data_aref = shift; $chart_widget->chart( $data_aref ) # or however Tk::Chart be used, matey } sub subC { my $chart_widget = shift; my $data_aref = shift; # ... # I don't have a clue what be happenin' here, me hearty. # ... subB($chart_widget, $data_aref); }