From PHP to Perl

PHP array_unique in Perl

Posted in Other by gosukiwi on March 6, 2008
Tags: , ,

Well this function is very handy when you are working with flatfiles, or for example you dont have a category table on your mysql database, so entries have repeatead categories.

What the function array_unique does, is return an array without the repeated elements given in the array you gave as argument.

For example:

$array = array(1,2,1,3,4,1,2,6,4,5,1);
$array = array_unique($array);

That will print

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )

It deletted repeated elements, now, how to do that in perl?
Well that function does not exists in perl, anyways, you can create it, its not very hard… Here are some examples, this is the one i made

sub array_unique
my @list = @_;
my %finalList;
$finalList{$_} = 1; # delete double values
return (keys(%finalList));

It works exactly the same as PHP’s array_unique, someone at Cafe PM also suggested this one, which is shorter but to be honest i dont understand it much

sub array_unique
my %seen = ();
@_ = grep { ! $seen{ $_ }++ } @_;

That function also works the same as the one before, and the code in perl would be


use CGI’:all’;
use strict;

# Code…
sub array_unique
my %seen = ();
@_ = grep { ! $seen{ $_ }++ } @_;
# More code….

my @array = (1,2,1,3,4,1,2,6,4,5,1);
@array = sort(array_unique(@array));
print header, “@array”;

And that will print

1 2 3 4 5 6

Well, thats it, enjoy!



Posted in Other by gosukiwi on December 6, 2006

Well, i think you all know how to redirect in PHP (header(‘Location: page.php’)) but, in perl, you have to set the header before the input, and what if you always include a header file, print the content, and then a footer file, or use some kind of “PHP” Navigation, including files?
Well, there is one way to do this, “Javascript”
You can redirect with Javascript from Perl!

First, you need to make a basic JS Code

function redirect(time, url)
$seconds = time*1000;
$url = url;

That will redirect in x seconds, to an x url
And, for some Perl integration, i made this simple function

sub redirect
print ‘<script language=”javascript” type=”text/javascript”>redirect(‘.$_[0].’,\”.$_[1].’\’)</script>’;

And thats all! Now, when you want to redirect, just make


Thats the equivalent of PHP’s

header(‘refresh: 1; url=mypage.php’);

Well, i hope you find this useful :] Bye!