Hi guys, thanks for the speedy reply. The problem i guess is that i only want the subroutine, or array sorted once, and it isnt defined until the END of the loop.. lemme attach the code, and hopefully it will help
#!/usr/local/bin/perl # Author: Dipul Patel # This Perl Script takes a home site chosen by the user, then calcula +tes # the distance from that home site to every site in the system and pr +ints # in a HTML table. #--------------------------------------------------------------------- # Process information for main site #--------------------------------------------------------------------- $lat_long = "/tmp/sitesLL"; $filepath = "/data1/PHL/neighbors"; $query_string = $ENV{'QUERY_STRING'}; @search = split(/&/,$query_string); @info = split(/=/, $search[0]); @siteinfo = split(/-/, $info[1]); print "Content-type: text/html\n\n"; #read in lat and long file open(LL, $lat_long); @lat_long = <LL>; close(LL); #Get long,lat,g,h,j for main site @dataline = grep /^$siteinfo[0]/, @lat_long; @dataparse = split(/\|/, $dataline[0]); ($sitelat, $sitelong) = split(/,/, $dataparse[3]); $g = $dataparse[4]; $h = $dataparse[5]; $j = $dataparse[6]; #--------------------------------------------------------------------- # Process information for every other site, one at a time #--------------------------------------------------------------------- #open directory and get sites names opendir DIR, $filepath; @allfiles = grep !/^\.\.?$/, readdir DIR; closedir DIR; @allfiles = sort @allfiles; $totalsite=@allfiles; @allfiles2=@allfiles; foreach $site(@allfiles) { chomp $site; @frst = split(/[a-z][a-z]/, $site); @cell = split(/[A-Z]/, $frst[1]); push(@othersiteinfo, $cell[0]); } #Open assiociated neighbor list file open(IN, "$filepath/$siteinfo[1]"); @data=<IN>; close(IN); #get sector numbers for neighbors foreach $line(@data){ #chomp $line; @information = split (/\|/, $line); push (@neighbor,$information[1]); } $n=-1; $temphigh = 0; while($n<$totalsite){ $n++; @dataline2 = grep /^$othersiteinfo[$n]/, @lat_long; @dataparse2 = split(/\|/, $dataline2[0]); ($sitelat2, $sitelong2) = split(/,/, $dataparse2[3]); $g2 = $dataparse2[4]; $h2 = $dataparse2[5]; $j2 = $dataparse2[6]; #--------------------------------------------------------------------- # calculate distance from main site to other sites #--------------------------------------------------------------------- $a=($g2-$g)*($g2-$g); $b=($h2-$h)*($h2-$h); $c=($j2-$j)*($j2-$j); $abc=($a+$b+$c); $sqabc=sqrt($abc); $distance=(3960*$sqabc); $distance = sprintf "%1.2f", $distance; $distance2=$distance; $distance3=$distance; $distance4=$distance; if ($temphighval >= $temphigh){ $temphigh=$temphighval; } if ( $distance > 10){ next; } # if ( $distance == 0){ # next; # } # The following code, first compares the sector number of the current + site to that of the neighbor list, # then it complies 2 arrays, one with all the neighbors, the other ar +ray with the other sites. $element = $othersiteinfo[$n]; if (grep {$_ eq $element} @neighbor) { @array3=($allfiles[$n],$distance2); push (@test1, @array3); push (@highval, $distance2); } else{ @array2=($allfiles[$n],$distance); push (@test2, @array2); } }#end whileloop my $done_sort=0; # or some more meaningful name while( $cond) { # probably some code here unless( $done_sort) { sort_the_array( @array); $done_sort=1; } # more code here } #create hash and sorted array for non-neighbors %distance=@test2; @sorted = sort { $distance{$a} <=> $distance{$b} } keys %distance; #extract sector numbers from sitename for use in hyperlinks. $k=0; @nonneighsect=@sorted; for ($h=0; $h<=$#nonneighsect; $h++) { $nonneighsect[$h] =~ s/\w{2}(\d{4})\w+/$1/; } #create hash and sorted array for neighbors %distance2=@test1; @sorted2 = sort { $distance2{$a} <=> $distance2{$b} } keys %distan +ce2; #extract sector numbers from sitename for use in hyperlinks. $j=0; @neighsect=@sorted2; for ($i=0; $i<=$#neighsect; $i++) { $neighsect[$i] =~ s/\w{2}(\d{4})\w+/$1/; } #-------------------- # the following code prints a table, with all the sites sorted first b +y neighbor, then distance. It also provides links # to automattically calculate distances for other sites, as well as ma +p them. #-------------------- print "<HTML>\n"; print "<HEAD><TITLE>Distance Tool</TITLE></HEAD>\n"; print "<TABLE BORDER=1 cellspacing=1 cellpadding=1 WIDTH =65%>\n"; print "<TR><TH Colspan = 4> Distance From $siteinfo[1] To:<TH>"; # print " <FONT SIZE=\-5><A HREF=\"http://www-mat.nextel.com/cg +i-bin/rfn-cgi/neighbormap2.cgi?frames=frames&site=$siteinfo[0]-$sitei +nfo[1]&rpt=Daily-Total&Lfactor=150000&sector=1\" target=_top>1</a></f +ont>\n"; # print " <FONT SIZE=\-5><A HREF=\"http://www-mat.nextel.com/cg +i-bin/rfn-cgi/neighbormap2.cgi?frames=frames&site=$siteinfo[0]-$sitei +nfo[1]&rpt=Daily-Total&Lfactor=150000&sector=2\" target=_top>2</a></f +ont>\n"; # print " <FONT SIZE=\-5><A HREF=\"http://www-mat.nextel.com/cg +i-bin/rfn-cgi/neighbormap2.cgi?frames=frames&site=$siteinfo[0]-$sitei +nfo[1]&rpt=Daily-Total&Lfactor=150000&sector=3\" target=_top>3</a></f +ont>\n"; print "<FONT SIZE =\-5>"; print "<TR><TH>Site<TH>Distance<TH>Neighbor<TH>Map(sector)\n"; foreach $site3 (@sorted2) { print " <TR><TD><FONT SIZE=\-5><A HREF=\"http://www-mat.ne +xtel.com/cgi-bin/rfn-cgi/distance.cgi?site=$neighsect[$j]-$site3\" >$ +site3<TD>$distance2{$site3}<TD align=center>YES</font>\n"; print " <TD align=center><FONT SIZE=\-5><A HREF=\"http://w +ww-mat.nextel.com/cgi-bin/rfn-cgi/neighbormap2.cgi?frames=frames&site +=$neighsect[$j]-$site3&rpt=Daily-Total&Lfactor=150000&sector=1\" targ +et=_top>1</a></font>\n"; print " <FONT SIZE=\-5><A HREF=\"http://www-mat.nextel.com +/cgi-bin/rfn-cgi/neighbormap2.cgi?frames=frames&site=$neighsect[$j]-$ +site3&rpt=Daily-Total&Lfactor=150000&sector=2\" target=_top>2</a></fo +nt>\n"; print " <FONT SIZE=\-5><A HREF=\"http://www-mat.nextel.com +/cgi-bin/rfn-cgi/neighbormap2.cgi?frames=frames&site=$neighsect[$j]-$ +site3&rpt=Daily-Total&Lfactor=150000&sector=3\" target=_top>3</a></fo +nt>\n"; $j++; } foreach $site2 (@sorted) { print " <TR><TD><FONT SIZE=\-5><A HREF=\"http://www-mat.ne +xtel.com/cgi-bin/rfn-cgi/distance.cgi?site=$nonneighsect[$k]-$site2\" +>$site2<TD>$distance{$site2}<TD align=center>NO</font>\n"; print " <TD align=center><FONT SIZE=\-5><A HREF=\"http://w +ww-mat.nextel.com/cgi-bin/rfn-cgi/neighbormap2.cgi?frames=frames&site +=$nonneighsect[$k]-$site2&rpt=Daily-Total&Lfactor=150000&sector=1\" t +arget=_top>1</a></font>\n"; print " <FONT SIZE=\-5><A HREF=\"http://www-mat.nextel.com +/cgi-bin/rfn-cgi/neighbormap2.cgi?frames=frames&site=$nonneighsect[$k +]-$site2&rpt=Daily-Total&Lfactor=150000&sector=2\" target=_top>2</a>< +/font>\n"; print " <FONT SIZE=\-5><A HREF=\"http://www-mat.nextel.com +/cgi-bin/rfn-cgi/neighbormap2.cgi?frames=frames&site=$nonneighsect[$k +]-$site2&rpt=Daily-Total&Lfactor=150000&sector=3\" target=_top>3</a>< +/font>\n"; $k++; } print "</FONT>"; print "</TABLE>\n"; print "</HTML>\n";
now, what i want, is where it says
if ( $distance > 10){ next; }
i want the 10 to be replaced with the highest value of the array defined at the end of the loop:
if (grep {$_ eq $element} @neighbor) { @array3=($allfiles[$n],$distance2); push (@test1, @array3); push (@highval, $distance2); }
But.. that array is added to everytime the loop runs, and i need the highest value from it when it is complete, so i can specify the largest distance to map. I hope this helps.
Dipul Patel

In reply to RE: Re: Breaking a Loop by Anonymous Monk
in thread Breaking a Loop by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.