LINUX.ORG.RU

История изменений

Исправление gh0stwizard, (текущая версия) :

#!/usr/bin/perl

use strict;
use warnings;

use JSON::XS;
use Scalar::Util qw/blessed/;

sub f {
  my $un = 0; # unblessed
  my $bl = 0; # blessed

  eval { (blessed $_ ? $bl++ : $un++) for (@_); $bl }
  and $bl == 2 and $un == 1
  and @_ == 3
    or die "f: expect 2 blessed objects and 1 unblessed,\n\t"
          ."but got blessed $bl and unblessed $un objects";

  print shift->pretty->utf8->encode({hello => "lor"});
  $\ = "\n";
  print shift->pretty->utf8->encode({i => "love $_[-1]"});
}

eval {
  f(JSON::XS->new, JSON::XS->new);
};

print $@ if ($@);

eval {
  f(JSON::XS->new, JSON::XS->new, (bless [], "smth"), 1, 2, 3);
};

print $@ if ($@);


f(JSON::XS->new, JSON::XS->new, "perl");

Делай все что хочешь, лучше не придумаешь языка :)

Исходная версия gh0stwizard, :

#!/usr/bin/perl

use strict;
use warnings;

use JSON::XS;
use Scalar::Util qw/blessed/;

sub f {
  my $un = 0; # blessed
  my $bl = 0; # unblessed

  eval { (blessed $_ ? $bl++ : $un++) for (@_); $bl }
  and $bl == 2 and $un == 1
  and @_ == 3
    or die "f: expect 2 blessed objects and 1 unblessed,\n\t"
          ."but got blessed $bl and unblessed $un objects";

  print shift->pretty->utf8->encode({hello => "lor"});
  $\ = "\n";
  print shift->pretty->utf8->encode({i => "love $_[-1]"});
}

eval {
  f(JSON::XS->new, JSON::XS->new);
};

print $@ if ($@);

eval {
  f(JSON::XS->new, JSON::XS->new, (bless [], "smth"), 1, 2, 3);
};

print $@ if ($@);


f(JSON::XS->new, JSON::XS->new, "perl");

Делай все что хочешь, лучше не придумаешь языка :)