Search notes:

Perl module HTTP::BrowserDetect

#!/usr/bin/perl
use warnings;
use strict;

use HTTP::BrowserDetect;

open (my $user_agent_strings_h, '<', '../../_additional_files_/UserAgentStrings') or die;

my %examples;
my %examples_val;

while (my $agent = <$user_agent_strings_h>) {

  chomp $agent;

  my $parser = HTTP::BrowserDetect->new($agent);


  if (my $val = $parser -> browser) {
    add_to_examples_val('Browser', $agent, $val);
  }
# if (my $val = $parser -> browser_string) {
#   add_to_examples_val('Browser string', $agent, $val);
# }
  if (my $val = $parser -> browser_version) {
    add_to_examples_val('Browser version', $agent, $val);
  }
  if (my $val = $parser -> browser_major) {
    add_to_examples_val('Browser major', $agent, $val);
  }
  if (my $val = $parser -> browser_minor) {
    add_to_examples_val('Browser minor', $agent, $val);
  }
  if (my $val = $parser -> browser_beta) {
    add_to_examples_val('Browser beta', $agent, $val);
  }
  if (my $val = $parser -> os) {
    add_to_examples_val('OS', $agent, $val);
  }
  if (my $val = $parser -> device) {
    add_to_examples_val('Device', $agent, $val);
  }
# if (my $val = $parser -> device_string) {
#   add_to_examples_val('Device String', $agent, $val);
# }
  if (my $val = $parser -> robot) {
    add_to_examples_val('Robot', $agent, $val);
  }

  if ($parser -> mobile) {
    add_to_examples('Mobile', $agent);
  }
  else {
    add_to_examples('Non-Mobile', $agent);
  }

  if ($parser -> tablet) {
    add_to_examples('Tablet', $agent);
  }
  else {
    add_to_examples('Non-Tablet', $agent);
  }

  if ($parser -> lib) {
    add_to_examples('Library', $agent);
  }
  else {
    add_to_examples('Non-Library', $agent);
  }
}

close $user_agent_strings_h;

for my $example_name (keys %examples) {
  print "\n\n$example_name\n    ";
  print join "\n    ", @{$examples{$example_name}};
}

for my $example_name (keys %examples_val) {
  print "\n\n$example_name\n    ";

  print join "\n    ",  (map { sprintf("%-20s: %s", $_, $examples_val{$example_name}{$_}) }  keys %{$examples_val{$example_name}});
}

sub add_to_examples_val {
  my $name  = shift;
  my $agent = shift;
  my $val   = shift;

  $examples_val{$name} = {} unless exists $examples_val{$name};

  return if exists $examples_val{$name}{$val};

  return if keys %{$examples_val{$name}} >= 6;

  $examples_val{$name}{$val} = $agent;
}

sub add_to_examples {
  my $name  = shift;
  my $agent = shift;

  $examples{$name} = [] unless exists $examples{$name};

  if (@{$examples{$name}} <= 3) {
    push @{$examples{$name}}, $agent;
  }
}
Github repository PerlModules, path: /HTTP/BrowserDetect/script.pl

See also

HTML::ParseBrowser, HTTP::DetectUserAgent, HTTP::MobileAgent, Mobile::UserAgent, Parse::HTTP::UserAgent, UserAgentStrings
Perl modules

Index