Scalar-Quote
view release on metacpan or search on metacpan
lib/Scalar/Quote.pm view on Meta::CPAN
"\b" => '\b',
"\f" => '\f' );
sub escape_char($ ) {
my $char=shift;
exists $esc{$char} ? $esc{$char} : char_to_hex($char)
}
# converts unprintable chars to \x{XX} and also escapes '"' and '\' if
# required
sub Q ($ ) {
my $s=shift;
defined $s or return 'undef';
if ($s=~s/([^!#&()*+,\-.\/0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\]\^_`abcdefghijklmnopqrstuvwxyz{|}~ ])/escape_char($1)/ge) {
return qq("$s");
}
return qq('$s');
}
*quote=\&Q;
# compares two strings and returns the position where they start to be
lib/Scalar/Quote.pm view on Meta::CPAN
if (length $e>=$end) {
$len+=$end;
$e='';
}
quote($s.substr($_[0], $start, $len).$e);
}
# escape and quote string start operator, like Q but truncates the
# string if it is to long.
sub S ($;$ ) {
my $len=defined $_[1] ? $_[1] : 32;
quote_cut ($_[0], 0, $len);
}
*quote_start=\&S;
my $number_re=qr/^\s*[+-]?(?:\d+|\d*\.\d*)(?i:E[+-]?\d+)?\s*$/;
# quote number
sub N ($ ) {
no warnings;
if (defined $_[0]) {
if ($_[0]=~/$number_re/o) {
return sprintf("%f", $_[0]);
}
return sprintf("%f (str: %s)", $_[0], S($_[0]));
}
'undef'
}
*quote_number=\&N;
# D computes the difference between two strings.
sub D ($$;$$ ) {
no warnings 'uninitialized';
return () if $_[0] eq $_[1];
my $len=defined $_[3] ? $_[3] : 32;
my $start=(defined $_[2] ? $_[2] : -8)
+ str_diffix($_[0], $_[1]);
my $a=quote_cut($_[0], $start, $len);
my $b=quote_cut($_[1], $start, $len);
return ($a, $b) if (wantarray);
( run in 1.464 second using v1.01-cache-2.11-cpan-4ab04211f4c )