in reply to Unique Array Entries
#!perl -w use strict; open (DATAFILE,"D:/JUNK/data.txt"); my $file_content = do {local $/; <DATAFILE> }; my @fa1 = split(/\n/,$file_content); my $cnt=0; my %hv=(); #Set to hash with a count to retain order of list foreach (@fa1) { $hv{$_}=$cnt; $cnt++; } my %already_deleted=(); foreach my $v1 (@fa1) { if (exists($already_deleted{$v1})) { next; } my $len1 = length($v1); foreach my $v2 (keys %hv) { if ((exists($already_deleted{$v1})) || (exists($already_deleted{$v +1}))) { next; } my $len2 = length($v2); if (($len2 > $len1) && (substr($v2,0,$len1) eq $v1)) { #Delete the hash key value delete $hv{$v1}; #Store deleted hash values to help move through the #foreach statements quicker with next statements $already_deleted{$v1}=1; } else { #Nothing } } } #Retain the original order, then print 'em out. my @keys = sort{$hv{$a} <=> $hv{$b}} keys %hv; foreach (@keys) {print "$_ \n"}; ___DATAFILE___ Topology/IPClassA Topology/IPClassA/Device Topology/IPClassA/Device/log_ratio Topology/IPClassA/Device/poll_interval Topology/IPClassA/Device = 2 Topology/IPClassA/Device = 2/poll_interval Topology/IPClassA/Device = 2/is_managed Topology/IPClassA/Device = 2/Port Topology/IPClassA/Device = 2/Port/ifPhysAddress Topology/IPClassA/Device = 2/Port/poll_interval Topology/IPClassC Topology/IPClassC/Device Topology/IPClassC/Device/poll_interval Location
|
|---|