GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Lingua::EN::PluralToSingular(3) User Contributed Perl Documentation Lingua::EN::PluralToSingular(3)

Lingua::EN::PluralToSingular - change an English plural to a singular

    use Lingua::EN::PluralToSingular qw/to_singular is_plural/;
    my @words = qw/knives sheep dog dogs cannabis/;
    for my $word (@words) {
        if (is_plural ($word)) {
            my $sing = to_singular ($word);
            print "The singular of '$word' is '$sing'.\n";
        }
        else {
            print "'", ucfirst ($word), "' is not plural.\n";
        }
    }

produces output

    The singular of 'knives' is 'knife'.
    The singular of 'sheep' is 'sheep'.
    'Dog' is not plural.
    The singular of 'dogs' is 'dog'.
    'Cannabis' is not plural.

(This example is included as synopsis.pl <https://fastapi.metacpan.org/source/BKB/JSON-Parse-0.21/examples/synopsis.pl> in the distribution.)

This documents Lingua::EN::PluralToSingular version 0.21 corresponding to git commit 2d53254eeaec8d2006655f63f61b4f6868e81153 <https://github.com/benkasminbullock/Lingua-EN-PluralToSingular/commit/2d53254eeaec8d2006655f63f61b4f6868e81153> released on Thu Jun 21 17:48:56 2018 +0900.

This converts words denoting a plural in the English language into words denoting a singular noun.

    my $singular = to_singular ($word);

Convert $word into its singular form. For example,

    to_singular ('cats')

returns 'cat'. If the word is unknown or does not seem to be plural, "to_singular" returns the word itself, so

    to_singular ('battlehorn');

returns 'battlehorn'.

    if (is_plural ($word)) {
        print "There are too many $word here.\n";
    }
    else {
        print "There is a $word here.\n";
    }

Returns 1 if the word is a valid plural, 0 if not. It also returns 1 for ambiguous words like "sheep".

"to_singular" assumes its input is a noun. For example, "lives" may be the plural of "life", or the verb "live", as in "he lives". The routine assumes a noun and converts to "life".

It does not deal with capitalized words. If the input word may be capitalized, or if its initial letter may be capitalized, the user must preprocess it to put it into the normal case. So, for example,

    to_singular ('FLIES');

returns 'FLIES' and

    to_singular ('Wolves');

returns 'Wolve'. Similarly,

    to_singular ('Charles');

returns 'Charles', but

    to_singular ('charles');

returns 'charle', since the exception only applies if the word is capitalized.

The module does not attempt to handle pronoun forms like "ourselves" or "themselves". These words are left unaltered.

For the sake of user convenience, false plurals like "octopi" are also accepted by the module. (The plural of "octopus" is "octopuses".)

There are many exceptions which have not been included, notably words with Latin or Greek plurals.

The script scripts/singular provides a quick way to get singular versions of nouns:

    singular cats dogs geese
    # Prints "cat dog goose".

Lingua::EN::Inflect
Lingua::EN::Inflect by Damian Conway converts English singular nouns to plurals, but not vice-versa.
Lingua::EN::Inflect::Number
Lingua::EN::Inflect::Number is supposed to do the same thing as this module. However, as of the time of writing (version 1.12) it's actually based on the third-person verb handling of Lingua::EN::Inflect, in other words it takes a verb in the "he says" form and converts it into "say". Thus you get bugs like <https://rt.cpan.org/Public/Bug/Display.html?id=64564> where the reporter demonstrates that 'to_S incorrectly renders the singular of "statuses" as "statuse."'

Thanks to Xan Charbonnet and H2CHANG for various additions and fixes. Lisa Hare contributed support for plurals ending in i as part of the 2016 Pull Request Challenge.

Ben Bullock, <bkb@cpan.org>

This package and associated files are copyright (C) 2011-2018 Ben Bullock.

You can use, copy, modify and redistribute this package and associated files under the Perl Artistic Licence or the GNU General Public Licence.

2018-06-21 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.