is_sanctioned Checks if the input profile info matches a sanctioned entity. The arguments are the same as those of get_sanctioned_info. It returns 1 if a match is found, otherwise 0. _match_other_fields Matches fields possibly available in addition to name and date of birth. Returns a a hash-ref reporting the matched fields if it succeeeds; otherwise returns false (undef). get_sanctioned_info Tries to find a match a sanction entry matching the input profile args. It takes arguments in two forms. In the new API, it takes a hashref containing the following named arguments: * first_name: first name * last_name: last name * date_of_birth: (optional) date of birth as a string or epoch * place_of_birth: (optional) place of birth as a country name or code * residence: (optional) name or code of the country of residence * nationality: (optional) name or code of the country of nationality * citizen: (optional) name or code of the country of citizenship * postal_code: (optional) postal/zip code * national_id: (optional) national ID number * passport_no: (oiptonal) passort number For backward compatibility it also supports the old API, taking the following args: * first_name: first name * last_name: last name * date_of_birth: (optional) date of birth as a string or epoch It returns a hash-ref containg the following data: - matched: 1 if a match was found; 0 otherwise - list: the source for the matched entry, - matched_args: a name-value hash-ref of the similar arguments, - comment: additional comments if necessary, _index_data Indexes data by name. Each name may have multiple matching entries. NAME Data::Validate::Sanctions - Validate a name against sanctions lists SYNOPSIS # as exported function use Data::Validate::Sanctions qw/is_sanctioned get_sanction_file set_sanction_file/; set_sanction_file('/var/storage/sanction.csv'); my ($first_name, $last_name) = ("First", "Last Name"); print 'BAD' if is_sanctioned($first_name, $last_name); # as OO use Data::Validate::Sanctions; #You can also set sanction_file in the new method. my $validator = Data::Validate::Sanctions->new(sanction_file => '/var/storage/sanction.csv'); print 'BAD' if $validator->is_sanctioned("$last_name $first_name"); DESCRIPTION Data::Validate::Sanctions is a simple validitor to validate a name against sanctions lists. The list is from: - https://www.treasury.gov/ofac/downloads/sdn.csv, - https://www.treasury.gov/ofac/downloads/consolidated/cons_prim.csv - https://ofsistorage.blob.core.windows.net/publishlive/ConList.csv - https://webgate.ec.europa.eu/fsd/fsf/public/files/xmlFullSanctionsList_1_1/content?token=$eu_token run update_sanctions_csv to update the bundled csv. The path of list can be set by function "set_sanction_file" or by method "new". If not set, then environment variable $ENV{SANCTION_FILE} will be checked, at last the default file in this package will be used. METHODS is_sanctioned is_sanctioned($last_name, $first_name); is_sanctioned($first_name, $last_name); is_sanctioned("$last_name $first_name"); when one string is passed, please be sure last_name is before first_name. or you can pass first_name, last_name (last_name, first_name), we'll check both "$last_name $first_name" and "$first_name $last_name". retrun 1 if match is found and 0 if match is not found. It will remove all non-alpha chars and compare with the list we have. get_sanctioned_info my $result =get_sanctioned_info($last_name, $first_name, $date_of_birth); print 'match: ', $result->{matched_args}->{name}, ' on list ', $result->{list} if $result->{matched}; return hashref with keys: matched 1 or 0, depends if name has matched list name of list matched (present only if matched) matched_args The list of arguments matched (name, date of birth, residence, etc.) It will remove all non-alpha chars and compare with the list we have. update_data Fetches latest versions of sanction lists, and updates corresponding sections of stored file, if needed last_updated Returns timestamp of when the latest list was updated. If argument is provided - return timestamp of when that list was updated. new Create the object, and set sanction_file my $validator = Data::Validate::Sanctions->new(sanction_file => '/var/storage/sanction.csv'); get_sanction_file get sanction_file which is used by "is_sanctioned" (procedure-oriented) set_sanction_file set sanction_file which is used by "is_sanctioned" (procedure-oriented) _name_matches Pass in the client's name and sanctioned individual's name to see if they are similar or not export_data Exports the sanction lists to a local file in YAML format. data Gets the sanction list content with lazy loading. AUTHOR Binary.com <fayland@binary.com> COPYRIGHT Copyright 2014- Binary.com LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. SEE ALSO Data::OFAC