http://www.perlmonks.org?node_id=910217


in reply to Re^3: Extracting Unique elements
in thread Extracting Unique elements

Hey Thanks a lot. I got it. I greatly appreciate your help. I have another small issue. when I get the array of something I extract, I try to print them using the code

if (ref($bar) eq "ARRAY") { foreach my $q (@$bar){ print FH $q ,","; } } else { print FH $bar; }

But, this doesn't seem to be of help. I want to do something that if its an array separate them by ',' else just print the individual without ','. But when I use the above code it also prints the single element with a ',' and in an array it gives ',' after the last element. I know how to solve the same issue in XSLT its something like

<xsl:test if position() != last()> <xsl:value-of select="."/>; </xsl:test> <xsl:test if position() = last()> <xsl:value-of select="."/> </xsl:test>

Thus everything is separated by ';' except for the last element and if its only a single element then it gets printed as it is. Can I do something same in perl, can you please help. Thank you, Sammed

Replies are listed 'Best First'.
Re^5: Extracting Unique elements
by wind (Priest) on Jun 17, 2011 at 20:00 UTC

    Just use join instead of a loop:

    print FH ref($bar) eq "ARRAY" ? join(',', @$bar) : $bar;