#!/usr/bin/perl
# Idiom #312 List equality
use v5.10;
use strict;
say "\n==== Using native perl - flat numeric lists only ====\n";
my @a = ( 1, 2, 3, 4, 5 );
my @b = ( 1, 2, 3, 4, 5, 6 );
my @c = ( 1, 2, 3, 4 );
my @d = ( 'a' .. 'e' );
my @e = ( 1, 002, 3, 4, 5 ); # 002 is 2 in octal
my @f = ( 1, 2, 7, 4, 5 );
sub lcomp {
my ($a, $b) = @_;
# *E* length different
my $matched = 1;
for (my $i=0; $i < @$a; $i++) {
return 0 unless $a->[$i] == $b->[$i]; }
}
say 'lcomp( \@a, \@a ) : ', pp lcomp( \@a, \@a );
say 'lcomp( \@a, \@f ) : ', pp lcomp( \@a, \@f );
say 'lcomp( \@a, \@c ) : ', pp lcomp( \@a, \@c );
say 'lcomp( \@a, \@e ) : ', pp lcomp( \@a, \@e );
say 'lcomp( \@d, \@d ) : ', pp lcomp( \@d, \@d );
say 'lcomp( [1], [1] ) : ', pp lcomp( [1], [1] );
say "** the following didn't match due to (unreported) errors";
say 'lcomp( @a, @a ) : ', "dies because arguments aren't validated as array refs";
say 'lcomp( \@a, \@b ) : ', pp lcomp( \@a, \@b );
say 'lcomp( \@a, \@d ) : ', pp lcomp( \@a, \@d );
say 'lcomp( [[1]], [[1]] ) : ', pp lcomp( [[1]], [[1]] );
IyEvdXNyL2Jpbi9wZXJsCgojIElkaW9tICMzMTIgTGlzdCBlcXVhbGl0eQoKdXNlIHY1LjEwOwp1c2Ugc3RyaWN0OwoKc2F5ICJcbj09PT0gVXNpbmcgbmF0aXZlIHBlcmwgLSBmbGF0IG51bWVyaWMgbGlzdHMgb25seSA9PT09XG4iOwoKbXkgQGEgPSAoIDEsIDIsIDMsIDQsIDUgKTsKbXkgQGIgPSAoIDEsIDIsIDMsIDQsIDUsIDYgKTsKbXkgQGMgPSAoIDEsIDIsIDMsIDQgKTsKbXkgQGQgPSAoICdhJyAuLiAnZScgKTsKbXkgQGUgPSAoIDEsIDAwMiwgMywgNCwgNSApOyAjIDAwMiBpcyAyIGluIG9jdGFsCm15IEBmID0gKCAxLCAyLCA3LCA0LCA1ICk7CgpzdWIgbGNvbXAgewogICAgbXkgKCRhLCAkYikgPSBAXzsKCiAgICAjICpFKiBsZW5ndGggZGlmZmVyZW50CiAgICByZXR1cm4gMCBpZiAoIEAkYSAhPSBAJGIgKTsKCiAgICBteSAkbWF0Y2hlZCA9IDE7CiAgICBmb3IgKG15ICRpPTA7ICRpIDwgQCRhOyAkaSsrKSB7CiAgICAgICAgcmV0dXJuIDAgdW5sZXNzICRhLT5bJGldID09ICRiLT5bJGldOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgcHAgeyByZXR1cm4gc2hpZnQgPyAnbWF0Y2hlZCcgOiAnbm90IG1hdGNoZWQnIH0KCnNheSAnbGNvbXAoIFxAYSwgXEBhICkgICAgIDogJywgcHAgbGNvbXAoIFxAYSwgXEBhICAgICApOwpzYXkgJ2xjb21wKCBcQGEsIFxAZiApICAgICA6ICcsIHBwIGxjb21wKCBcQGEsIFxAZiAgICAgKTsKc2F5ICdsY29tcCggXEBhLCBcQGMgKSAgICAgOiAnLCBwcCBsY29tcCggXEBhLCBcQGMgICAgICk7CnNheSAnbGNvbXAoIFxAYSwgXEBlICkgICAgIDogJywgcHAgbGNvbXAoIFxAYSwgXEBlICAgICApOwpzYXkgJ2xjb21wKCBcQGQsIFxAZCApICAgICA6ICcsIHBwIGxjb21wKCBcQGQsIFxAZCAgICAgKTsKc2F5ICdsY29tcCggWzFdLCBbMV0gKSAgICAgOiAnLCBwcCBsY29tcCggWzFdLCBbMV0gICAgICk7CnNheSAiKiogdGhlIGZvbGxvd2luZyBkaWRuJ3QgbWF0Y2ggZHVlIHRvICh1bnJlcG9ydGVkKSBlcnJvcnMiOwpzYXkgJ2xjb21wKCAgQGEsICBAYSApICAgICA6ICcsICJkaWVzIGJlY2F1c2UgYXJndW1lbnRzIGFyZW4ndCB2YWxpZGF0ZWQgYXMgYXJyYXkgcmVmcyI7CnNheSAnbGNvbXAoIFxAYSwgXEBiICkgICAgIDogJywgcHAgbGNvbXAoIFxAYSwgXEBiICAgICApOwpzYXkgJ2xjb21wKCBcQGEsIFxAZCApICAgICA6ICcsIHBwIGxjb21wKCBcQGEsIFxAZCAgICAgKTsKc2F5ICdsY29tcCggW1sxXV0sIFtbMV1dICkgOiAnLCBwcCBsY29tcCggW1sxXV0sIFtbMV1dICk7Cg==