KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Update3: If you like this posting please don't upvote me but upvote the genius answer by DVK below. I have the following subroutines: use warnings; #Input my @pairs = ( "fred bill", "hello bye", "hello fred", "foo bar", "fred foo"); #calling the subroutine my @ccomp = connected_component(@pairs); use Data::Dumper; print Dumper \@ccomp; sub connected_component { my @arr = @_; my %links; foreach my $arrm ( @arr ) { my ($x,$y) = split(/\s+/,$arrm);; $links{$x}{$y} = $links{$y}{$x} = 1; } my %marked; # nodes we have already visited my @stack; my @all_ccomp; for my $node (sort keys %links) { next if exists $marked{$node}; @stack = (); connected($node); print "@stack\n"; push @all_ccomp, [@stack]; } sub connected { no warnings 'recursion'; my $node = shift; return if exists $marked{$node}; # Line 43 $marked{$node} = 1; push @stack, $node; # Line 45 my $children = $links{$node}; # Line 46 connected($_) for keys %$children; } return @all_ccomp; } But why it gives this message: Variable "%marked" will not stay shared at mycode.pl line 43. Variable "@stack" will not stay shared at mycode.pl line 45. Variable "%links" will not stay shared at mycode.pl line 46. Is it harmful? Error? How can fix my code so that it get rid of that message? Update1: I update the code that runs as is with the actuall error message Update2: I tried to modify using sub as DVK suggested. And it WORKED! use warnings; #Input my @pairs = ( "fred bill", "hello bye", "hello fred", "foo bar", "fred foo"); #calling the subroutine my @ccomp = connected_component(@pairs); use Data::Dumper; print Dumper \@ccomp; sub
Tags (comma-separated)
Save Edits
Cancel