Friday, December 03, 2010

Membandingkan struktur dari variabel

Saya mempunyai beberapa array dan saya harus membandingkan array-array tersebut.

Permasalahan muncul karena elemen dari array-array tersebut adalah berupa hash, satu menit kemudian saya sudah bersiap untuk membandingkan dengan memakai kode sendiri, namun seperti kebiasaan sebelumnya, pertama-tama, saya cari terlebih dahulu modul yang diperuntukan untuk keperluan ini di http://search.cpan.org dan beruntung saya menemukan Data::Compare.

Tapi setelah itu, saya baru ingat, bahwa Perl yang saya pakai adalah perl 5.10, Smart Match adalah solusinya !!

(Terus terang, saya sangat tertarik jika yang lainnya mempunyai pendekatan lain untuk kasus ini, apalagi kalau sambil golf :=) )

#!/usr/bin/perl
use strict;
use warnings;

use Data::Compare;
use feature qw/say/;
my $array1 = [
  {
   name => 'zack',
   age  => '26',
  },
  {
   name => 'jane',
   age  => '27',
  }
      ];

my $array2 = [
  {
   name => 'zack',
   age  => '26',
  },
  {
   name => 'janes',
   age  => '27'
  }
      ];

my $array3 = [
  {
   name => 'zack',
   age  => '26',
  },
  {
   name => 'janes',
   age  => '27'
  }
      ];


say Compare($array1, $array2) ? 'true' : 'false';
say Compare($array2, $array3) ? 'true' : 'false';

my @a1 = map { %{$_} } @$array1;
my @a2 = map { %{$_} } @$array2;
my @a3 = map { %{$_} } @$array3;

say @a1 ~~ @a2 ? 'true' : 'false';
say @a2 ~~ @a3 ? 'true' : 'false';

No comments: