crontab [-u user] { -l | -r | -e } ■オプション内容 -u ユーザを指定する。省略時は現在のカレントユーザになる -l 現在のcron設定を表示する -r 現在のcron設定を削除する -e 現在のcron設定を編集する。設定内容がない場合は新規作成するcrontab -e を実行し、記述する書式は次の通り。
$ crontab -e # 0分ごとに実行する 0 * * * * [コマンド] # 5分おきに実行する */5 * * * * [コマンド] # 1日1回、0時0分に実行する 0 0 * * * [コマンド] # 0 時から 23 時までの 2 時間おきに、毎 23 分ごとに実行する 23 0-23/2 * * * [コマンド] # 1月と 12月それぞれの 1〜20 日、23 時 00分に実行する * 23 1-20 1,12 * [コマンド] # 日曜日(0)から土曜日(6)まで 1分おきに実行する */1 * * * 0-6 [コマンド]日時を指定するために指定(ワイルドカード)が 5つ並んでいるが,それぞれの意味は次のようになっている。
* * * * * [コマンド] 1 2 3 4 5 ■ 日時指定方法 左から何番目 単位 指定方法 1 分 0〜59、例:*/15 2 時 0〜23、例:0-23 3 日(月) 1から31、例:1-20 4 月 1〜12 (or names)、例:1,6,12 5 日曜〜土曜 0〜6、例:0-6
crontab [-u user] { -l | -r | -e } ■オプション内容 -u ユーザを指定する。省略時は現在のカレントユーザになる -l 現在のcron設定を表示する -r 現在のcron設定を削除する -e 現在のcron設定を編集する。設定内容がない場合は新規作成するcrontab -e を実行し、記述する書式は次の通り。
$ crontab -e # 0分ごとに実行する 0 * * * * [コマンド] # 5分おきに実行する */5 * * * * [コマンド] # 1日1回、0時0分に実行する 0 0 * * * [コマンド] # 0 時から 23 時までの 2 時間おきに、毎 23 分ごとに実行する 23 0-23/2 * * * [コマンド] # 1月と 12月それぞれの 1〜20 日、23 時 00分に実行する * 23 1-20 1,12 * [コマンド] # 日曜日(0)から土曜日(6)まで 1分おきに実行する */1 * * * 0-6 [コマンド]日時を指定するために指定(ワイルドカード)が 5つ並んでいるが,それぞれの意味は次のようになっている。
* * * * * [コマンド] 1 2 3 4 5 ■ 日時指定方法 左から何番目 単位 指定方法 1 分 0〜59、例:*/15 2 時 0〜23、例:0-23 3 日(月) 1から31、例:1-20 4 月 1〜12 (or names)、例:1,6,12 5 日曜〜土曜 0〜6、例:0-6
print qq|Content-type: text/html\n\n|;という行が必要な以外は、PHP とほとんど同じである。 アップロードには、いつも使っているおなじみの CGI モジュールを使う。
use CGI;そうすると、以下のようにアクセスできる。
our $CGI = new CGI; ... my $xml = $CGI->param('file');$xml はファイルポインタが入っている。通常は open(IN, "..."); などするときの IN にあたるものである。以下は、コード。アップロードする側の HTML ファイルは PHP でアップロードファイルを処理するで紹介したのと同じ。
#!/usr/bin/perl
use strict;
use CGI;
our $CGI = new CGI;
print qq|Content-type: text/html\n\n|;
init();
sub init() {
# XMLパーサー作成 ('UTF-8')
my $xml_parser = new XML::Parser( ProtocolEncoding => 'UTF-8',
Handlers=>{ Start=>\&startElement,
End =>\&endElement,
Char =>\&dataHandler });
# ファイルのオープンはいらない。input タグで指定した name 属性がそのままファイルハンドルになる
my $xml = $CGI->param('file');
# XMLパース処理
$xml_parser->parse($xml) or die "XML error: $xml_parser";
# ファイルクローズ
close($xml);
}
1;
print qq|Content-type: text/html\n\n|;という行が必要な以外は、PHP とほとんど同じである。 アップロードには、いつも使っているおなじみの CGI モジュールを使う。
use CGI;そうすると、以下のようにアクセスできる。
our $CGI = new CGI; ... my $xml = $CGI->param('file');$xml はファイルポインタが入っている。通常は open(IN, "..."); などするときの IN にあたるものである。以下は、コード。アップロードする側の HTML ファイルは PHP でアップロードファイルを処理するで紹介したのと同じ。
#!/usr/bin/perl
use strict;
use CGI;
our $CGI = new CGI;
print qq|Content-type: text/html\n\n|;
init();
sub init() {
# XMLパーサー作成 ('UTF-8')
my $xml_parser = new XML::Parser( ProtocolEncoding => 'UTF-8',
Handlers=>{ Start=>\&startElement,
End =>\&endElement,
Char =>\&dataHandler });
# ファイルのオープンはいらない。input タグで指定した name 属性がそのままファイルハンドルになる
my $xml = $CGI->param('file');
# XMLパース処理
$xml_parser->parse($xml) or die "XML error: $xml_parser";
# ファイルクローズ
close($xml);
}
1;
<form enctype="multipart/form-data"...>
<input type="file" name="file" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<!--
<form enctype="multipart/form-data" action="gmap_excel.php" method="post">
-->
<form enctype="multipart/form-data" action="gmap_excel.cgi" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<table width="600">
<tr><td>Names file:</td><td><input type="file" name="file" /><input type="submit" value="Upload" /></td></tr>
</table>
</form>
</body>
</html>
<?php
// ファイルのオープン
$fp = fopen($_FILES['file']['tmp_name'], 'r')
or die('Cannot open an XML file: ' . $_FILES['file']['tmp_name']);
// ファイルを読み込む
while ($data = fread($fp, 4096)) {
...
}
?>
<?php
init();
function init() {
// XMLパーサー作成 ('UTF-8')
$xml_parser = xml_parser_create('UTF-8');
// 大文字変換を行わない
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
// start および end 要素のハンドラを設定する
xml_set_element_handler($xml_parser, 'startElement', 'endElement');
xml_set_character_data_handler($xml_parser, 'characterData');
// ファイルのオープン
$fp = fopen($_FILES['file']['tmp_name'], 'r')
or die('Cannot open an XML file: ' . $_FILES['file']['tmp_name']);
// ファイルを読み込む
while ($data = fread($fp, 4096)) {
// XMLパース処理
if (!xml_parse($xml_parser, $data, feof($fp))) {
// パースエラー処理
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
// XMLパーサの開放
xml_parser_free($xml_parser);
}
?>
<form enctype="multipart/form-data"...>
<input type="file" name="file" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<!--
<form enctype="multipart/form-data" action="gmap_excel.php" method="post">
-->
<form enctype="multipart/form-data" action="gmap_excel.cgi" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<table width="600">
<tr><td>Names file:</td><td><input type="file" name="file" /><input type="submit" value="Upload" /></td></tr>
</table>
</form>
</body>
</html>
<?php
// ファイルのオープン
$fp = fopen($_FILES['file']['tmp_name'], 'r')
or die('Cannot open an XML file: ' . $_FILES['file']['tmp_name']);
// ファイルを読み込む
while ($data = fread($fp, 4096)) {
...
}
?>
<?php
init();
function init() {
// XMLパーサー作成 ('UTF-8')
$xml_parser = xml_parser_create('UTF-8');
// 大文字変換を行わない
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
// start および end 要素のハンドラを設定する
xml_set_element_handler($xml_parser, 'startElement', 'endElement');
xml_set_character_data_handler($xml_parser, 'characterData');
// ファイルのオープン
$fp = fopen($_FILES['file']['tmp_name'], 'r')
or die('Cannot open an XML file: ' . $_FILES['file']['tmp_name']);
// ファイルを読み込む
while ($data = fread($fp, 4096)) {
// XMLパース処理
if (!xml_parse($xml_parser, $data, feof($fp))) {
// パースエラー処理
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
// XMLパーサの開放
xml_parser_free($xml_parser);
}
?>
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Status;
use HTTP::Response;
our $URL = 'https://perltips.twinkle.cc/'; # アクセスする URL
my $proxy = new LWP::UserAgent;
$proxy->agent('your own created browser name here');
$proxy->timeout(60);
my $response = $proxy->request(HTTP::Request->new('GET' => $URL));
my $content = $response->content;
my %tags = (
'img' => 'src',
'a' => 'href',
'link' => 'href',
'td' => 'background',
'form' => 'action'
);
my $data = $content;
skip_others: while($data =~ s/<([^>]*)>// && $i++ < 10000) { # 無限ループに陥るのを防ぐ
my $in_brackets = $1;
foreach $key (keys %tags) {
if($in_brackets =~ /^\s*$key\s+/i) {
if($in_brackets =~ /\s+$tags{$key}\s*=\s*["']([^"']*)["']/i
|| $in_brackets =~ /\s+$tags{$key}\s*=\s*([^\s]+)/i ) {
my $link = $1;
$link =~ s/[\n\r]//g;
$link =~ s/\./\\./g;
$link =~ s/\?/\\?/g;
$content =~
s/\s*=\s*["']*$link["']*/=<<<ここに置換文字列を書く>>>/
if $link !~ m/mailto:/i
&& $link !~ m/javascript/i;
next skip_others;
}
}
}
}
1;
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Status;
use HTTP::Response;
our $URL = 'https://perltips.twinkle.cc/'; # アクセスする URL
my $proxy = new LWP::UserAgent;
$proxy->agent('your own created browser name here');
$proxy->timeout(60);
my $response = $proxy->request(HTTP::Request->new('GET' => $URL));
my $content = $response->content;
my %tags = (
'img' => 'src',
'a' => 'href',
'link' => 'href',
'td' => 'background',
'form' => 'action'
);
my $data = $content;
skip_others: while($data =~ s/<([^>]*)>// && $i++ < 10000) { # 無限ループに陥るのを防ぐ
my $in_brackets = $1;
foreach $key (keys %tags) {
if($in_brackets =~ /^\s*$key\s+/i) {
if($in_brackets =~ /\s+$tags{$key}\s*=\s*["']([^"']*)["']/i
|| $in_brackets =~ /\s+$tags{$key}\s*=\s*([^\s]+)/i ) {
my $link = $1;
$link =~ s/[\n\r]//g;
$link =~ s/\./\\./g;
$link =~ s/\?/\\?/g;
$content =~
s/\s*=\s*["']*$link["']*/=<<<ここに置換文字列を書く>>>/
if $link !~ m/mailto:/i
&& $link !~ m/javascript/i;
next skip_others;
}
}
}
}
1;