This file is indexed.

/usr/share/perl5/Geo/Functions.pm is in libgeo-functions-perl 0.07-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
require Exporter;
package Geo::Functions;

=head1 NAME

Geo::Functions - Package for standard Geo:: functions.

=head1 SYNOPSIS

  use Geo::Functions qw{deg_rad deg_dms rad_deg}; #import into namespace
  print "Degrees: ", deg_rad(3.14/4), "\n";

  use Geo::Functions;
  my $obj = Geo::Functions->new;
  print "Degrees: ", $obj->deg_rad(3.14/2), "\n";

=head1 DESCRIPTION

=head1 CONVENTIONS

Function naming convention is "format of the return" underscore "format of the parameters."  For example, you can read the deg_rad function as "degrees given radians" or "degrees from radians".

=cut

use strict;
use vars qw($VERSION $PACKAGE @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
@ISA = qw(Exporter);
@EXPORT_OK = (qw{deg_rad rad_deg deg_dms rad_dms dms_deg dm_deg round mps_knots knots_mps});
$VERSION = sprintf("%d.%02d", q{Revision: 0.07} =~ /(\d+)\.(\d+)/);
use Geo::Constants qw{RAD DEG KNOTS};

=head1 CONSTRUCTOR

=head2 new

The new() constructor

  my $obj = Geo::Functions->new();

=cut

sub new {
  my $this = shift();
  my $class = ref($this) || $this;
  my $self = {};
  bless $self, $class;
  $self->initialize(@_);
  return $self;
}

=head1 METHODS

=cut

sub initialize {
  my $self = shift();
  my $param = shift();
}

=head2 deg_dms

Degrees given degrees minutes seconds.

  my $deg=deg_dms(39, 29, 17.134);

  my $deg=deg_dms(39, 29, 17.134, 'N');

=cut

sub deg_dms {
  my $self=shift();
  my $d=ref($self) ? shift()||0 : $self;
  my $m=shift()||0;
  my $s=shift()||0;
  my $nsew=shift()||'N';
  my $sign = ($nsew=~m/[SW-]/i) ? -1 : 1; #matches "-" to support -1
  return $sign * ($d + ($m + $s/60)/60);
}

=head2 deg_rad

Degrees given radians.

  my $deg=deg_rad(3.14);

=cut

sub deg_rad {
  my $self=shift();
  my $rad=ref($self) ? shift() : $self;
  return $rad*DEG();
}

=head2 rad_deg

Radians given degrees.

  my $rad=rad_deg(90);

=cut

sub rad_deg {
  my $self=shift();
  my $deg=ref($self) ? shift() : $self;
  return $deg*RAD();
}

=head2 rad_dms

Radians given degrees minutes seconds.

  my $rad=rad_dms(45 30 20.0);

=cut

sub rad_dms {
  return rad_deg(deg_dms(@_));
}

=head2 round

Round to the nearest integer. This formula rounds toward +/- infinity.

  my $int=round(42.2);

=cut

sub round {
  my $self=shift();
  my $number=ref($self) ? shift() : $self;
  return int($number + 0.5 * ($number <=> 0));
}

=head2 dms_deg

Degrees minutes seconds given degrees.

  my ($d, $m, $s, $sign)=dms_deg($degrees, qw{N S});
  my ($d, $m, $s, $sign)=dms_deg($degrees, qw{E W});

=cut

sub dms_deg {
  my $self=shift();
  my $number=ref($self) ? shift() : $self;
  my @sign=@_;
  my $sign=$number >= 0 ? $sign[0]||1 : $sign[1]||-1;
  $number=abs($number);
  my $d=int($number);
  my $m=int(($number-$d) * 60);
  my $s=((($number-$d) * 60) - $m) * 60;
  my @dms=($d, $m, $s, $sign);
  return wantarray ? @dms : join(" ", @dms);
}

=head2 dm_deg

Degrees minutes given degrees.

  my ($d, $m, $sign)=dm_deg($degrees, qw{N S});
  my ($d, $m, $sign)=dm_deg($degrees, qw{E W});

=cut

sub dm_deg {
  my $self=shift();
  my $number=ref($self) ? shift() : $self;
  my @sign=@_;
  my $sign=$number >= 0 ? $sign[0]||1 : $sign[1]||-1;
  $number=abs($number);
  my $d=int($number);
  my $m=($number-$d) * 60;
  my @dm=($d, $m, $sign);
  return wantarray ? @dm : join(" ", @dm);
}

=head2 mps_knots

meters per second given knots

  my $mps=mps_knots(50.0);

=cut

sub mps_knots {
  my $self=shift();
  my $number=ref($self) ? shift() : $self;
  return $number * KNOTS();
}

=head2 knots_mps

knots given meters per second

  my $knots=knots_mps(25.0);

=cut

sub knots_mps {
  my $self=shift();
  my $number=ref($self) ? shift() : $self;
  return $number / KNOTS();
}

1;

__END__

=head1 TODO

=head1 BUGS

Please send to the geo-perl email list.

=head1 LIMITS

=head1 AUTHOR

Michael R. Davis qw/perl michaelrdavis com/

=head1 LICENSE

Copyright (c) 2006 Michael R. Davis (mrdvt92)

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=head1 SEE ALSO

Geo::Constants
Geo::Ellipsoids