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';

Monday, April 05, 2010

lib/webrat/adapters/mechanize.rb ignores http headers

Looks webrat ignores http headers (when we tried to manually set http headers), for example
def rating
   url_path = '/rating';# + id
   header "Accept", "text/xml"
   visit(
       @url + url_path,
       :post
   )
end
So i take a look closer into lib/webrat/adapters/mechanize.rb, and i saw this line of code inside method 'post'
@response = mechanize.post(url, post_data)
, i think this is the problem.

I change the line with
@response = mechanize.post(url, post_data, headers_argument_not_used)

And now looks everything is okay (i hope).