• About Us
  • Blog
  • Basket
  • Account
  • Sign In

Perl V3.1 Documentation

You are viewing an old version of the documentation. For the latest, please go here: Perl V3.2

Pattern Example

This is a console program takes a pattern data file and a useragent as argument and outputs data about the detected device.

This program requires the JSON package. If you do not already have it installed you can get it via CPAN:

cpan JSON


  • -filename or -f: The path to a pattern data file.
  • -properties or -p: The properties to return. If not set a default set of properties will be used.
  • -ua: The useragent to use. If not set a default useragent taken from Google Chrome 35 will be used.
use FiftyOneDegrees::PatternV3;
use JSON;
use Data::Dumper;
use feature qw/say/;
use Getopt::Long;

my $filename;
my $propertyList;
my $userAgentString;

my $r = GetOptions('filename|f=s' => \$filename,
                   'properties|p=s' => \$propertyList,
                   'ua=s' => \$userAgentString);

$userAgentString //= "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36";

$propertyList //= "Id,BrowserName,BrowserVendor,BrowserVersion,CookiesCapable,IsTablet,IsMobile,IsCrawler";

die "DAT file does not exist! usage: $0 -f <dat filename>\n" unless -e ("$filename");

# Initialize Pattern library

# For pattern a dataset pointer is needed. This will be passd into other
# PatternV3 functions.
my $dsPointer = FiftyOneDegrees::PatternV3::dataSetInitWithPropertyString($filename, $propertyList);
my $json = FiftyOneDegrees::PatternV3::getMatch($dsPointer, $userAgentString);

say "=== Data Output ===";
my %properties = %{ decode_json($json) };
# Loop through and print all returned properties
while (my ($key, $value) = each %properties) {
	say $key . ": " . $value;