view release on metacpan or search on metacpan
lib/App/Sqitch.pm view on Meta::CPAN
our $VERSION = 'v1.6.1'; # VERSION
BEGIN {
# Force Locale::TextDomain to encode in UTF-8 and to decode all messages.
$ENV{OUTPUT_CHARSET} = 'UTF-8';
bind_textdomain_filter 'App-Sqitch' => \&Encode::decode_utf8, Encode::FB_DEFAULT;
}
# Okay to load Sqitch classes now that types are created.
use App::Sqitch::Config;
view all matches for this distribution
view release on metacpan or search on metacpan
--delimiter|d=<value> # default: "\t"
--no-header|nh # don't display header
--transpose-output|to # switch rows and columns
=head3 INPUT VALIDATION
By default, C<st> skips invalid input with a warning.
You can change this behavior with the following options:
view all matches for this distribution
view release on metacpan or search on metacpan
PUSHmortal|5.009002||p
PUSHn|||
PUSHp|||
PUSHs|||
PUSHu|5.004000||p
PUTBACK|||
PerlIO_clearerr||5.007003|
PerlIO_close||5.007003|
PerlIO_context_layers||5.009004|
PerlIO_eof||5.007003|
PerlIO_error||5.007003|
eval_sv(sv, G_SCALAR);
SvREFCNT_dec(sv);
SPAGAIN;
sv = POPs;
PUTBACK;
if (croak_on_error && SvTRUE(GvSV(errgv)))
croak(SvPVx(GvSV(errgv), na));
return sv;
view all matches for this distribution
view release on metacpan or search on metacpan
t/01_vollwaesche.t view on Meta::CPAN
if (my $exit = system "exec >$PFX/output 2>&1; $command") {
my $output = do { local *FH; open FH, "<$PFX/output" or die "$PFX/output: $!"; local $/; <FH> };
$output = substr $output, -30000 if 30000 < length $output; # "output truncated after..." I wish they would document these things
printf STDERR
"\n\n# FAILED #%d exit status 0x%04x (%s)\n\n# OUTPUT:\n%s\n\n",
$test, $exit, $command, $output;
print "not ok $test\n";
} else {
print "ok $test\n";
}
view all matches for this distribution
view release on metacpan or search on metacpan
script/vtt2srt view on Meta::CPAN
This document describes version 0.014 of vtt2srt (from Perl distribution App-SubtitleUtils), released on 2025-07-15.
=head1 SYNOPSIS
% vtt2srt < INPUT.vtt > OUTPUT.srt
=head1 HOMEPAGE
Please visit the project's homepage at L<https://metacpan.org/release/App-SubtitleUtils>.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/Sysadmin/Log/Simple/HTTP.pm view on Meta::CPAN
return $ua->post_form($self->{http}->{uri}, {
user => $self->{user},
log => $logentry,
});
}
elsif ( $self->{http}->{method} eq 'PUT' ) {
return $ua->put($self->{http}->{uri}, {
user => $self->{user},
log => $logentry,
});
}
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/Table2YAML/Loader/AsciiTable.pm view on Meta::CPAN
our $VERSION = '0.003'; # VERSION
sub load_asciitable {
my $self = shift;
local $INPUT_RECORD_SEPARATOR = $self->record_separator();
my $ref = ref $self->input() || q();
my $ascii_fh
= $ref eq q(GLOB)
? $self->input()
: IO::File->new( $self->input(), q(r) );
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/TemplateServer.pm view on Meta::CPAN
map_foo_bar:
- ["foo"]
- "bar"
- ["bar"]
- "foo"
- "INVALID INPUT"
instantiate:
test_instance: "Test"
another_test_instance:
Test: "new"
This makes the variables C<foo>, C<test_instance>, and
C<another_test_instance> available in the templates. It also creates
a package called C<Test> and adds a constructor called C<new>, and a
method called C<map_foo_bar> that returns "bar" when the argument is
"foo", "foo" when the argument is "bar", and "INVALID INPUT"
otherwise.
=head3 DESCRIPTION
Any key/value pair other than C<packages> and C<instantiate> is
view all matches for this distribution
view release on metacpan or search on metacpan
} ;
$yaml = "---\n$yaml\n" ;
my $directory_structure = Load($yaml) ;
DumpTree $directory_structure, 'munged', NO_OUTPUT => 1, FILTER => $get_db_paths ;
#diag "YAML\n$yaml\n";
#diag DumpTree $directory_structure, 'Directories' ;
#diag DumpTree \%db_paths, 'DB' ;
view all matches for this distribution
view release on metacpan or search on metacpan
doc/SchemaExtractor.pm view on Meta::CPAN
The extractor looks for parameter documentation in POD:
```perl
=head2 validate_email($email)
=head3 INPUT
$email - string (5-254 chars), email address
Returns: 1 if valid
=cut
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/Textcast.pm view on Meta::CPAN
use strict;
use warnings ;
use Carp qw(carp croak confess) ;
use English qw( -no_match_vars ) ;
$OUTPUT_AUTOFLUSH++;
my $get_terminal_size ;
BEGIN
{
lib/App/Textcast.pm view on Meta::CPAN
use App::Textcast 'record_textcast' ;
record_textcast
(
COMMAND => 'bash',
OUTPUT_DIRECTORY => shift @ARGV,
COMPRESS => $compress,
COLUMNS => $columns,
ROWS => $rows,
) ;
lib/App/Textcast.pm view on Meta::CPAN
=over 2
=item * COMMAND => $string - the name of the command to tun in a terminal. You most probably wan to run
I<bash> or I<sh>
=item * OUTPUT_DIRECTORY => $directory_path - Optional - the path to the directory where the textcast is to be
recorded. This subroutine will create a directory if this option is not set. if this option is set, the directory
should not exist.
=item * COMPRESS => $boolean - Not implemented
lib/App/Textcast.pm view on Meta::CPAN
my (%arguments) = @_;
my ($terminal_columns, $terminal_rows) = $get_terminal_size->() ;
my $output_directory = check_output_directory($arguments{OUTPUT_DIRECTORY}) ;
my $vt_process = create_vt102_sub_process
(
$arguments{COMMAND},
$arguments{COLUMNS} || $terminal_columns,
$arguments{ROWS} || $terminal_rows,
lib/App/Textcast.pm view on Meta::CPAN
my $vt = Term::VT102->new (cols => $columns, rows => $rows,);
$vt->option_set ('LFTOCRLF', 1); # Convert linefeeds to linefeed + carriage return.
$vt->option_set ('LINEWRAP', 1); # Make sure line wrapping is switched on.
# Set up the callback for OUTPUT; this callback function simply sends
# whatever the Term::VT102 module wants to send back to the terminal and
# sends it to the child process - see its definition below.
$vt->callback_set ('OUTPUT', \&vt_output, $pty);
# Set up a callback for row changes, so we can process updates and display
# them without having to redraw the whole screen every time. We catch CLEAR,
# SCROLL_UP, and SCROLL_DOWN with another function that triggers a
# whole-screen repaint. You could process SCROLL_UP and SCROLL_DOWN more
lib/App/Textcast.pm view on Meta::CPAN
sub vt_output
{
=head2 [p] vt_output($vtobject, $type, $arg1, $arg2, $private)
Callback for OUTPUT events - for Term::VT102.
I<Arguments>
=over 2
lib/App/Textcast.pm view on Meta::CPAN
=cut
my ($vtobject, $type, $arg1, $arg2, $private) = @_;
if ($type eq 'OUTPUT')
{
$private->syswrite ($arg1, length $arg1);
}
return ;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/TimeTracker/Command/Gitlab.pm view on Meta::CPAN
$self->branch( lc($branch) ) unless $self->branch;
}
# reopen
if ($self->config->{gitlab}{reopen} && $issue->{state} eq 'closed') {
$self->_call('PUT','projects/'.$self->project_id.'/issues/'.$self->issue.'?state_event=reopen');
say "reopend closed issue";
}
# set assignee
if ($self->config->{gitlab}{set_assignee}) {
lib/App/TimeTracker/Command/Gitlab.pm view on Meta::CPAN
if ($assignee ne $user->{username}) {
warning_message("Assignee already set to ".$assignee);
}
}
else {
$self->_call('PUT','projects/'.$self->project_id.'/issues/'.$self->issue.'?assignee_id='.$user->{id});
say "Assignee set to you";
}
}
else {
error_message("Cannot get user-id, thus cannot assign issue");
lib/App/TimeTracker/Command/Gitlab.pm view on Meta::CPAN
if (my $remove = $on_start->{remove}) {
foreach my $remove (@$remove) {
delete $l{$remove};
}
}
$self->_call('PUT','projects/'.$self->project_id.'/issues/'.$self->issue.'?labels='.uri_escape(join(',',keys %l)));
say "Labels are now: ".join(', ',sort keys %l);
}
};
#after [ 'cmd_start', 'cmd_continue', 'cmd_append' ] => sub {
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/Validation/Automation/Logging.pm view on Meta::CPAN
sub log {
my $self = shift;
my $msg = shift;
local $OUTPUT_AUTOFLUSH = 1;
print { $self->log_file_handle }
scalar(localtime(time)).caller()." $msg"."\n" if( $msg );
return 1;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/Waf.pm view on Meta::CPAN
my $ips = `/sbin/iptables-save`;
my @ipsline = split /\n/sm, $ips;
my $dist = 0;
for (@ipsline) {
$dist = 1 if ( /$IP/ and /INPUT/ and /DROP/ );
}
unless ($dist) {
`/sbin/iptables -I INPUT -s $IP -j DROP`;
my $btime = localtime( time() );
print "$btime :band $IP \n";
}
else {
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/Widget/JSApp/TabbedAppFrame.pm view on Meta::CPAN
######################################################################
# ATTRIBUTES
######################################################################
# INPUTS FROM THE ENVIRONMENT
=head1 DESCRIPTION
This class implements an application frame.
This includes a menu, an application toolbar, a screen selector,
lib/App/Widget/JSApp/TabbedAppFrame.pm view on Meta::CPAN
configured to do so. Otherwise, it implements itself as a table.
=cut
######################################################################
# OUTPUT METHODS
######################################################################
sub _init {
&App::sub_entry if ($App::trace);
my $self = shift;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/Widget/AppFrame.pm view on Meta::CPAN
######################################################################
# ATTRIBUTES
######################################################################
# INPUTS FROM THE ENVIRONMENT
=head1 DESCRIPTION
This class implements an application frame.
This includes a menu, an application toolbar, a screen selector,
lib/App/Widget/AppFrame.pm view on Meta::CPAN
}
}
######################################################################
# OUTPUT METHODS
######################################################################
sub html {
my $self = shift;
my ($context, $name, $html);
view all matches for this distribution
view release on metacpan or search on metacpan
bin/docmake view on Meta::CPAN
Use the DocBook xsl-ns ( namespaces ) URLs.
Verbose - output the commands' invocation as they are executed.
=item * -o OUTPUT_PATH
Put the result in B<OUTPUT_PATH> .
=item * -x STYLESHEET ; --stylesheet STYLESHEET
Use the XSLT stylesheet B<STYLESHEET> for performing XSLT transformations.
view all matches for this distribution
view release on metacpan or search on metacpan
script/youtube-dl-play view on Meta::CPAN
% youtube-dl [OPTS] --get-filename <URL_OR_VIDEO_ID>
=item * Run youtube-dl that outputs to stdout and pipe it to mpv
% youtube-dl [OPTS] -o - <URL_OR_VIDEO_ID> | tee <OUTPUTFILENAME> | mpv -
=back
Some caveats:
view all matches for this distribution
view release on metacpan or search on metacpan
script/yt-dlp-play view on Meta::CPAN
% yt-dlp [OPTS] --get-filename <URL_OR_VIDEO_ID>
=item * Run yt-dlp that outputs to stdout and pipe it to mpv
% yt-dlp [OPTS] -o - <URL_OR_VIDEO_ID> | tee <OUTPUTFILENAME> | mpv -
=back
Some caveats:
view all matches for this distribution
view release on metacpan or search on metacpan
script/_chinese-zodiac-of view on Meta::CPAN
# my $mode = '>';
# if ($filename =~ /^\s*(>{1,2})\s*(.*)$/) {
# ($mode, $filename) = ($1, $2);
# }
# open $OUT, $mode, $filename
# or YAML::Old::Mo::Object->die('YAML_DUMP_ERR_FILE_OUTPUT', $filename, "$!");
# }
# binmode $OUT, ':utf8'; # if $Config{useperlio} eq 'define';
# local $/ = "\n"; # reset special to "sane"
# print $OUT Dump(@_);
# unless (ref $filename eq 'GLOB') {
# close $OUT
# or do {
# my $errsav = $!;
# YAML::Old::Mo::Object->die('YAML_DUMP_ERR_FILE_OUTPUT_CLOSE', $filename, $errsav);
# }
# }
#}
#
#sub LoadFile {
script/_chinese-zodiac-of view on Meta::CPAN
# if (openhandle $filename) {
# $IN = $filename;
# }
# else {
# open $IN, '<', $filename
# or YAML::Old::Mo::Object->die('YAML_LOAD_ERR_FILE_INPUT', $filename, "$!");
# }
# binmode $IN, ':utf8'; # if $Config{useperlio} eq 'define';
# return Load(do { local $/; <$IN> });
#}
#
script/_chinese-zodiac-of view on Meta::CPAN
# Can't parse node
#YAML_PARSE_ERR_BAD_EXPLICIT
# Unsupported explicit transfer: '%s'
#YAML_DUMP_USAGE_DUMPCODE
# Invalid value for DumpCode: '%s'
#YAML_LOAD_ERR_FILE_INPUT
# Couldn't open %s for input:\n%s
#YAML_DUMP_ERR_FILE_CONCATENATE
# Can't concatenate to YAML file %s
#YAML_DUMP_ERR_FILE_OUTPUT
# Couldn't open %s for output:\n%s
#YAML_DUMP_ERR_FILE_OUTPUT_CLOSE
# Error closing %s:\n%s
#YAML_DUMP_ERR_NO_HEADER
# With UseHeader=0, the node must be a plain hash or array
#YAML_DUMP_WARN_BAD_NODE_TYPE
# Can't perform serialization for node type: '%s'
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/ZofCMS/Plugin/Captcha.pm view on Meta::CPAN
},
B<Optional>. Takes 6-digit hex RGB notation as a value. Specifies the color
of cryptocrap lines. B<Defaults to:> C<#000000>
=head1 OUTPUT
$t->{d}{session}{captcha} = 'random_number';
$t->{t}{plug_captcha_error} = 'error message';
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/ZofCMS/Plugin/CRUD.pm view on Meta::CPAN
the file field during record editing.
Lastly, the plugin currently doesn't support
selects, checkboxes, or radio boxes in the Create/Update form.
=head1 A NOTE ON FORM INPUT ERROR CHECKING
This plugin only checks for whether or not a mandatory field is
present when creating/updating records. If you need more advanced error
checking, see L<App::ZofCMS::Plugin::FormChecker> that can (read "should")
work together with this plugin (run C<FormChecker> first).
view all matches for this distribution
view release on metacpan or search on metacpan
vendor/cache/authors/id/M/MI/MIYAGAWA/HTTP-Tinyish-0.18.tar.gz
vendor/cache/authors/id/M/MI/MIYAGAWA/Menlo-1.9019.tar.gz
vendor/cache/authors/id/M/MI/MIYAGAWA/Menlo-Legacy-1.9022.tar.gz
vendor/cache/authors/id/M/MI/MIYAGAWA/Module-CPANfile-1.1004.tar.gz
vendor/cache/authors/id/P/PL/PLICEASE/File-Which-1.27.tar.gz
vendor/cache/authors/id/R/RC/RCAPUTO/IO-Pipely-0.006.tar.gz
vendor/cache/authors/id/R/RC/RCAPUTO/POE-Test-Loops-1.360.tar.gz
vendor/cache/authors/id/R/RE/REHSACK/Params-Util-1.102.tar.gz
vendor/cache/authors/id/R/RJ/RJBS/Data-OptList-0.112.tar.gz
vendor/cache/authors/id/R/RJ/RJBS/Getopt-Long-Descriptive-0.110.tar.gz
vendor/cache/authors/id/R/RJ/RJBS/IPC-Run3-0.048.tar.gz
vendor/cache/authors/id/R/RJ/RJBS/Sub-Exporter-0.988.tar.gz
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/combinesheets.pm view on Meta::CPAN
# TYPE_XSL => 'xsl', # not-yet-supported
};
# hash keys describing an input ($inputs)
use constant {
INPUT_FILE => 'file',
INPUT_TYPE => 'type',
INPUT_MATCHED_BY => 'matched_by',
INPUT_MATCHED_BY_INDEX => 'matched_by_index',
INPUT_HEADERS => 'headers',
INPUT_CONTENT => 'content',
};
# hash keys describing wanted fields ($wanted_columns)
use constant {
CFG_TYPE => 'type', # what kind of input (MATCH, PROG, PROGS or PERL)
lib/App/combinesheets.pm view on Meta::CPAN
unless (exists $matches->{$key}) {
warn "[WR04] Input named '$key' does not have any MATCH column defined in configuration. Input ignored.\n";
next;
}
$primary_input = $key unless $primary_input; # remember which input came first
my $input = { INPUT_FILE() => $value,
INPUT_MATCHED_BY() => $matches->{$key} };
if ($value =~ m{\.csv$}i) {
$input->{INPUT_TYPE()} = TYPE_CSV;
} else {
$input->{INPUT_TYPE()} = TYPE_TSV;
}
$inputs->{$key} = $input;
}
die "[ER01] No valid inputs specified. Exiting.\n"
unless scalar keys (%$inputs) > 0;
lib/App/combinesheets.pm view on Meta::CPAN
} else {
$headers = read_headers ($input);
}
# add new properties to $input
unless (exists $headers->{ $input->{INPUT_MATCHED_BY()} }) {
warn ("[WR05] Input '$input_id' does not contain the matching header '" . $input->{INPUT_MATCHED_BY()} .
"'. Input ignored\n");
delete $inputs->{$input_id};
next;
}
$headers_by_id->{$input_id} = $headers
unless exists $headers_by_id->{$input_id};
$input->{INPUT_HEADERS()} = $headers;
$input->{INPUT_MATCHED_BY_INDEX()} = $headers->{ $input->{INPUT_MATCHED_BY()} };
}
# check real headers vs. headers as defined in configuration
my $already_reported = {};
foreach my $col (@$wanted_cols) {
lib/App/combinesheets.pm view on Meta::CPAN
# read all inputs into memory
foreach my $input_id (keys %$inputs) {
my $input = $inputs->{$input_id};
my $content = read_content ($input);
$input->{INPUT_CONTENT()} = $content;
}
# output combined headers
my @header_line = ();
foreach my $col (@$wanted_cols) {
lib/App/combinesheets.pm view on Meta::CPAN
}
print $combined join ("\t", @header_line) . "\n"
unless scalar @header_line == 0;
# combine all inputs and make output lines
foreach my $matching_content (sort keys %{ $inputs->{$primary_input}->{INPUT_CONTENT()} }) {
# $matching_content is, for example, a publication title ("An Atlas of....")
# inputs may have more lines with the same value in the matching columns
# therefore, extract first the matching lines from all inputs
my $lines_to_combine = [];
lib/App/combinesheets.pm view on Meta::CPAN
foreach my $col (@$wanted_cols) {
if ($col->{CFG_TYPE()} eq CFG_MATCH) {
unless (exists $inputs_to_combine->{ $col->{CFG_ID()} }) {
# remember the same lines (from the same input) only once
my $input = $inputs->{ $col->{CFG_ID()} };
push (@$lines_to_combine, $input->{INPUT_CONTENT()}->{$matching_content} || [undef]);
$inputs_to_combine->{ $col->{CFG_ID()} } = $#$lines_to_combine;
}
}
}
lib/App/combinesheets.pm view on Meta::CPAN
my $input = $inputs->{ $col->{CFG_ID()} };
my $input_line = @input_lines[$inputs_to_combine->{ $col->{CFG_ID()} }];
# use Data::Dumper;
# print Dumper (\@input_lines);
# print Dumper ($inputs_to_combine);
my $idx = $input->{INPUT_HEADERS()}->{ $col->{CFG_IN_COL()} };
my $value = $input_line->[$idx] || '';
push (@output_line, $value);
} else {
push (@calculated, $column_count);
push (@output_line, '');
lib/App/combinesheets.pm view on Meta::CPAN
# ----------------------------------------------------------------
# Does the requested $column exist in the given input's headers?
# ----------------------------------------------------------------
sub column_exists {
my ($input_id, $column) = @_;
return exists $inputs->{$input_id}->{INPUT_HEADERS()}->{$column};
}
# ----------------------------------------------------------------
# Read the headers (the first line) form an input file (given in
# hashref $input) and store them in the hashref $headers, each od them
lib/App/combinesheets.pm view on Meta::CPAN
# ----------------------------------------------------------------
sub read_headers {
my ($input) = @_;
my $headers;
if ($input->{INPUT_TYPE()} eq TYPE_CSV) {
$headers = read_csv_headers ($input->{INPUT_FILE()});
} else {
$headers = read_tsv_headers ($input->{INPUT_FILE()});
}
my $new_headers = {};
my $column_index = 0;
foreach my $column (@$headers) {
$new_headers->{$column} = $column_index++;
lib/App/combinesheets.pm view on Meta::CPAN
# Read contents...
# ----------------------------------------------------------------
sub read_content {
my ($input) = @_;
my $content;
if ($input->{INPUT_TYPE()} eq TYPE_CSV) {
$content = read_csv_content ($input->{INPUT_FILE()}, $input->{INPUT_MATCHED_BY_INDEX()});
} else {
$content = read_tsv_content ($input->{INPUT_FILE()}, $input->{INPUT_MATCHED_BY_INDEX()});
}
return $content;
}
# ----------------------------------------------------------------
view all matches for this distribution
view release on metacpan or search on metacpan
t/lib/Test2/Plugin/HTTPTinyFile.pm view on Meta::CPAN
}
elsif($method eq 'POST')
{
die "TODO";
}
elsif($method eq 'PUT')
{
die "TODO";
}
elsif($method eq 'DELETE')
{
view all matches for this distribution
view release on metacpan or search on metacpan
lib/App/cpanminus/fatscript.pm view on Meta::CPAN
#pod
#pod $response = $http->request($method, $url);
#pod $response = $http->request($method, $url, \%options);
#pod
#pod Executes an HTTP request of the given method type ('GET', 'HEAD', 'POST',
#pod 'PUT', etc.) on the given URL. The URL must have unsafe characters escaped and
#pod international domain names encoded.
#pod
#pod If the URL includes a "user:password" stanza, they will be used for Basic-style
#pod authorization headers. (Authorization headers will not be included in a
#pod redirected request.) For example:
lib/App/cpanminus/fatscript.pm view on Meta::CPAN
#pod On an exception during the execution of the request, the C<status> field will
#pod contain 599, and the C<content> field will contain the text of the exception.
#pod
#pod =cut
my %idempotent = map { $_ => 1 } qw/GET HEAD PUT DELETE OPTIONS TRACE/;
sub request {
my ($self, $method, $url, $args) = @_;
@_ == 3 || (@_ == 4 && ref $args eq 'HASH')
or Carp::croak(q/Usage: $http->request(METHOD, URL, [HASHREF])/ . "\n");
lib/App/cpanminus/fatscript.pm view on Meta::CPAN
$response = $http->request($method, $url);
$response = $http->request($method, $url, \%options);
Executes an HTTP request of the given method type ('GET', 'HEAD', 'POST',
'PUT', etc.) on the given URL. The URL must have unsafe characters escaped and
international domain names encoded.
If the URL includes a "user:password" stanza, they will be used for Basic-style
authorization headers. (Authorization headers will not be included in a
redirected request.) For example:
view all matches for this distribution
view release on metacpan or search on metacpan
unlink $tempfile;
return $response;
}
my %idempotent = map { $_ => 1 } qw/GET HEAD PUT DELETE OPTIONS TRACE/;
sub request {
my ($self, $method, $url, $args) = @_;
@_ == 3 || (@_ == 4 && ref $args eq 'HASH')
or Carp::croak(q/Usage: $http->request(METHOD, URL, [HASHREF])/);
view all matches for this distribution
view release on metacpan or search on metacpan
script/cpanurl view on Meta::CPAN
unlink $tempfile;
return $response;
}
my %idempotent = map { $_ => 1 } qw/GET HEAD PUT DELETE OPTIONS TRACE/;
sub request {
my ($self, $method, $url, $args) = @_;
@_ == 3 || (@_ == 4 && ref $args eq 'HASH')
or Carp::croak(q/Usage: $http->request(METHOD, URL, [HASHREF])/ . "\n");
view all matches for this distribution