/usr/share/perl5/Rex/Helper/Encode.pm is in rex 1.4.1-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 | #
# (c) Jan Gehring <jan.gehring@gmail.com>
#
# vim: set ts=2 sw=2 tw=0:
# vim: set expandtab:
package Rex::Helper::Encode;
use strict;
use warnings;
our $VERSION = '1.4.1'; # VERSION
require Exporter;
use base qw(Exporter);
use vars qw(@EXPORT);
@EXPORT = qw(func_to_json);
my %escapes;
for ( 0 .. 255 ) {
$escapes{ chr($_) } = sprintf( "%%%02X", $_ );
}
sub url_encode {
my ($txt) = @_;
$txt =~ s/([^A-Za-z0-9_])/$escapes{$1}/g;
return $txt;
}
sub url_decode {
my ($txt) = @_;
$txt =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;
return $txt;
}
sub func_to_json {
return q|
sub to_json {
my ($ref) = @_;
my $s = "";
if(ref $ref eq "ARRAY") {
$s .= "[";
for my $itm (@{ $ref }) {
if(substr($s, -1) ne "[") {
$s .= ",";
}
$s .= to_json($itm);
}
return $s . "]";
}
elsif(ref $ref eq "HASH") {
$s .= "{";
for my $key (keys %{ $ref }) {
if(substr($s, -1) ne "{") {
$s .= ",";
}
$s .= "\"$key\": " . to_json($ref->{$key});
}
return $s . "}";
}
else {
if($ref =~ /^0\d+/) {
return "\"$ref\"";
}
elsif($ref =~ /^\d+$/) {
return $ref;
}
else {
$ref =~ s/'/\\\'/g;
return "\"$ref\"";
}
}
}
|;
}
1;
|