Acme-Greeting

 view release on metacpan or  search on metacpan

lib/Acme/Greeting.pm  view on Meta::CPAN

package Acme::Greeting;
use strict;
use warnings;
use v5.12.3;
use utf8;
use self;

our $VERSION = '0.0.3';

my $last = "";

sub new {
    my %opt = args;
    $opt{language} = "en" unless defined $opt{language};
    $opt{target} = "guest" unless defined $opt{target};

    my $realfile = "";
    my $db = "Acme/Greeting/$opt{language}.pm";
    for my $prefix (@INC) {
        $realfile = "$prefix/$db";
        last if (-f $realfile);
    }

    my @greeting = ();

    my $DB;
    open($DB, "<:utf8", $realfile) and do {
        while (<$DB>) {
            chomp;
            if ( m/^=item\ (.+)$ /x ) {
                push @greeting, $1;
            }
        }
        close $DB;
    };

    if (@greeting == 0) {
        push @greeting, __PACKAGE__ . ' says hi, $u';
    }

    my $greeting = $last;
    while ($greeting eq $last) {
        $greeting = $greeting[ int(rand(@greeting)) ];
        $greeting =~ s/\$u/$opt{target}/g;
    }

    $last = $greeting;
    return $greeting;
}

"Greeting";

__END__

=head1 NAME

Acme::Greeting - Greeting from Perl.

=head1 VERSION

This document describes Acme::Greeting version 0.0.1


=head1 SYNOPSIS

    use Acme::Greeting;


    Acme::Greeting->new(); # "Hello, guest"

=head1 DESCRIPTION

This module generates greeting messages in several languages.

=head1 INTERFACE

=over

=item new(%opt)

Generates a new greeting message. Return a string. %opt hash
can have these values:

B<language>, to specify the language of this greeting message. Default
is C<"en">.

B<target>, to specify the greeting target. Default is C<"guest">.



( run in 0.600 second using v1.01-cache-2.11-cpan-63c85eba8c4 )