← Index
NYTProf Performance Profile   « line view »
For /usr/local/libexec/sympa/task_manager-debug.pl
  Run on Tue Jun 1 22:32:51 2021
Reported on Tue Jun 1 22:35:06 2021

Filename/usr/local/lib/perl5/site_perl/DateTime/TimeZone/Local.pm
StatementsExecuted 0 statements in 0s
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
0000s0sDateTime::TimeZone::Local::::BEGIN@10DateTime::TimeZone::Local::BEGIN@10
0000s0sDateTime::TimeZone::Local::::BEGIN@11DateTime::TimeZone::Local::BEGIN@11
0000s0sDateTime::TimeZone::Local::::BEGIN@12DateTime::TimeZone::Local::BEGIN@12
0000s0sDateTime::TimeZone::Local::::BEGIN@3DateTime::TimeZone::Local::BEGIN@3
0000s0sDateTime::TimeZone::Local::::BEGIN@4DateTime::TimeZone::Local::BEGIN@4
0000s0sDateTime::TimeZone::Local::::BEGIN@5DateTime::TimeZone::Local::BEGIN@5
0000s0sDateTime::TimeZone::Local::::BEGIN@9DateTime::TimeZone::Local::BEGIN@9
0000s0sDateTime::TimeZone::Local::::FromEnvDateTime::TimeZone::Local::FromEnv
0000s0sDateTime::TimeZone::Local::::TimeZoneDateTime::TimeZone::Local::TimeZone
0000s0sDateTime::TimeZone::Local::::_IsValidNameDateTime::TimeZone::Local::_IsValidName
0000s0sDateTime::TimeZone::Local::::__ANON__DateTime::TimeZone::Local::__ANON__ (xsub)
0000s0sDateTime::TimeZone::Local::::__ANON__[:57]DateTime::TimeZone::Local::__ANON__[:57]
0000s0sDateTime::TimeZone::Local::::__ANON__[:76]DateTime::TimeZone::Local::__ANON__[:76]
0000s0sDateTime::TimeZone::Local::::_load_subclassDateTime::TimeZone::Local::_load_subclass
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package DateTime::TimeZone::Local;
2
3use strict;
4use warnings;
5use namespace::autoclean;
6
7our $VERSION = '2.47';
8
9use DateTime::TimeZone;
10use File::Spec;
11use Module::Runtime qw( require_module );
12use Try::Tiny;
13
14sub TimeZone {
15 my $class = shift;
16
17 my $subclass = $class->_load_subclass();
18
19 for my $meth ( $subclass->Methods() ) {
20 my $tz = $subclass->$meth();
21
22 return $tz if $tz;
23 }
24
25 die "Cannot determine local time zone\n";
26}
27
28{
29 # Stolen from File::Spec. My theory is that other folks can write
30 # the non-existent modules if they feel a need, and release them
31 # to CPAN separately.
32 my %subclass = (
33 android => 'Android',
34 cygwin => 'Unix',
35 dos => 'OS2',
36 epoc => 'Epoc',
37 MacOS => 'Mac',
38 MSWin32 => 'Win32',
39 NetWare => 'Win32',
40 os2 => 'OS2',
41 symbian => 'Win32',
42 VMS => 'VMS',
43 );
44
45 sub _load_subclass {
46 my $class = shift;
47
48 my $os_name = $subclass{$^O} || $^O;
49 my $subclass = $class . '::' . $os_name;
50
51 return $subclass if $subclass->can('Methods');
52
53 return $subclass if try {
54 ## no critic (Variables::RequireInitializationForLocalVars)
55 local $SIG{__DIE__};
56 require_module($subclass);
57 };
58
59 $subclass = $class . '::Unix';
60
61 require_module($subclass);
62
63 return $subclass;
64 }
65}
66
67sub FromEnv {
68 my $class = shift;
69
70 foreach my $var ( $class->EnvVars() ) {
71 if ( $class->_IsValidName( $ENV{$var} ) ) {
72 my $tz = try {
73 ## no critic (Variables::RequireInitializationForLocalVars)
74 local $SIG{__DIE__};
75 DateTime::TimeZone->new( name => $ENV{$var} );
76 };
77
78 return $tz if $tz;
79 }
80 }
81
82 return;
83}
84
85sub _IsValidName {
86 shift;
87
88 return 0 unless defined $_[0];
89 return 0 if $_[0] eq 'local';
90
91 return $_[0] =~ m{^[\w/\-\+]+$};
92}
93
941;
95
96# ABSTRACT: Determine the local system's time zone
97
98__END__