プログラムなどなど2
をテンプレートにして作成
開始行:
[[プログラムなどなど]]のつづき~
perl についてはこちらに移動(2016年2月21日)
#contents
*perl tips [#afa844d2]
**URIのリストから、それへのリンク付きのリストのhtmlファイ...
こんな感じのリスト(下)をリンク付きのリストのhtmlファイ...
in.txt
http://www.kit.ac.jp/
http://www.yahoo.co.jp/
http://www.google.co.jp/
makelink.pl
#!perl
print "<html>\n";
print "<body>\n";
print "<ul>\n";
while(<>){
chop;
print "<li><a href=\"$_\" target=\"_blank\">$_</a>\n";
}
print "</ul>\n";
print "</html>\n";
print "</body>\n";
使い方
perl makelink.pl <in.txt >out.txt
メールに貼り付けて Thunderbird ででも受け取ればできちゃう...
**タブ区切りテキストからカラムを抜き出す 16th March 2009 ...
タブ区切りテキストの「2列目」と「5列目」を抜き出す
first2and5.pl
#!perl
while(<>){
chop;
my @after = split /[\t]/;
print "@after[1]\t@after[4]\n";
}
@_ がなぜか上手く動かなかったので、配列名を明示することに...
動かなかったもの↓(2009年3月16日版)
#!perl
while(<>){
chop;
split /[\t]/;
print "@_[1]\t@_[4]\n";
}
使い方
perl first2and5.pl <in.txt >out.txt
これで26めがのファイルから必要な部分が取り出せて、1めがに...
**検索語を色付けしたhtmlファイルを出力する 23 May 2009 [#...
htmlファイルを検索して、検索語を蛍光マーカーで色付けした...
このpukiwikiで検索すると複数の検索語が色付けして表示され...
原理は<span>タグを利用して色付けするだけ~
本体部分のコードは下のようなもの
while( s/$keyword/1101TARGET_HERE1101/){}
while( s/1101TARGET_HERE1101/<span style=\"background-co...
出力例その1 → &ref(さんぷる-coloured.html); 出力例そ...
batch fileを利用して、ドラッグ&ドロップで使えるものを作...
おととい、某友人に、こんなのあるといいねえ、と言われて作...
その夜、firefoxのアドオンで同様の表示が実現できるとメール...
SearchWP
SearchBox Companion
です。
これを組み合わせると、
ページ内検索で、複数検索語を色分けしてくれます。
**複数のファイルの中の文字列を置換する 03 July 2009 & 16 ...
http://d.hatena.ne.jp/odz/20061218/1166499908 に従う
perl -pi -e 's|src="/|src"../|' * ← なぜか、上手くいかな...
バックアップファイルを作れと perl が言うのと、対象となる...
変換すべき文字列が複数あるときに対応するために、g オプシ...
上手くいった~
ということで
perl -pibak -e 's| |\t|g' *
これは、スペースひとつをタブへ変換、する~
(2013年11月16日)
** perl プログラムの頭に 21 March 2016 [#vde728c9]
#!/usr/bin/perl
もちろん、perl が別なところにあるなら、それにする
** hash 21 March 2016 [#n61673c1]
my %countrycode = (
"Afghanistan" => "Afghanistan",
"Albania" => "Albania",
"Algeria" => "Algeria",
"Andorra" => "Andorra",
……
"VirginIslandsBritish" => "Virgin Islands, British",
"VirginIslandsUS" => "Virgin Islands, U.S.",
"WallisandFutuna" => "Wallis and Futuna",
"Yemen" => "Yemen",
"Zambia" => "Zambia",
"Zimbabwe" => "Zimbabwe"
);
$nowcountry = $countrycode{VirginIslandsBritish};
で、参照できる。
** local time 21 March 2016 [#a6f1de77]
[[perlでYYYYMMDD形式の日付を得る>http://memo-off.blogspot...
$yyyymmdd は 20160321 のように~
$mydaymonthyear は 21 March 2016 のように~
$mon は 1月が「0」からなので注意。
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday,...
my $yyyymmdd = sprintf("%04d%02d%02d", $year + 1900, $mo...
my @monthname = ( January, February, March, April, May, ...
August, September, October, November, December);
my $mydaymonthyear = $mday . " " . $monthname[$mon] . " ...
** 乱数 21 March 2016 [#n3f355b3]
99999 までの自然数
my $randomnum = int(rand(99999));
** 分割して配列に収める 21 March 2016 [#oea22f3e]
- 区切り記号はかなり自由な場合を想定
- ここでは、コンマ(.)、ピリオド(,)、セミコロン(;)、...
- 空白文字以外を空白文字に置換し、その後1文字以上の空白...
- 配列を昇順にソート ← おまけ
- 収められた個数をカウント ← おまけ
my $inputnums = "何らかの文字列としてのデータ";
$inputnums =~ s/,/ /g;
$inputnums =~ s/\./ /g;
$inputnums =~ s/;/ /g;
$inputnums =~ s/:/ /g;
$inputnums =~ s/\t/ /g;
$inputnums =~ s/\n/ /g;
$inputnums =~ s/\r/ /g;
my @mynums = split(/ +/, $inputnums);
@mynums = sort {$a <=> $b} @mynums; # sort small to large
my $nummynum = @myunums;
** if 分岐 21 March 2016 [#d08d2d7d]
elsif であって、else if ではない~
else はなくてもよい
if(条件1){
……
}elsif(条件2){
……
}else{
……
}
** ファイルへの書き出し 21 March 2016 [#t2f1d11e]
- ファイルを開く=ファイルハンドルと結びつける
- ファイルハンドルに書く= print する、など
- ファイルを閉じる=ファイルハンドルを操作
open(DATAFILE, ">> $myoutfile") or die("error :$!");
(print で書く1)
print DATAFILE $mydaymonthyear;
(print で書く2:here document)
print DATAFILE << 'LATEXHAED';
内容
LATEXHAED
close(DATAFILE);
** here document 21 March 2016 [#j5aa5710]
そのまま、または、ほぼそのまま print する
出力先~
ここでは、DATAFILE に出力しているが、省くと STDOUT
end mark (ここでは「LATEXHAED」)
- シングルクォーテーションで囲むと、そのまま
- ダブルクォーテーションで囲むと、perl の変数が展開される
- 終りにはセミコロンを付けないので注意
print DATAFILE << 'LATEXHAED'; ← シングルクォーテーショ...
内容
LATEXHAED ← セミコロンなし
** wget でデータを取得する 21 March 2016 [#y68747f8]
[[ Linux&Perl→Perlメモ→ネットワークを使う→FTPダウンロード...
ほぼそのままですが……、pipe も使えるのです。ということで。
- 「-O -」標準出力への出力を指定
- 「-q」デバッグ情報を出力せず
- ダブルクォーテーションとシングルクォーテーションの使い...
open (myhtml, "wget -q -O - 'http://hoge.hoge.jp/hoge....
my @data = <myhtml>;
close (myhtml);
** pdf file を LaTeX で作成する 21 March 2016 [#tb80cd1a]
chdir("$myfullpdfdir");
system("latex $myfilename >> latexlog.log");
system("dvipdfmx $myfilename >> dvipdfmxlog.log");
- cgiプログラムではなく、ローカルで作成するなら、system ...
- ワタシの環境では、ローカルでは platex が動いたが、cgi ...
TeXLive(texlive.x86_64 2007-60.el6_7 など)、
Red Hat Enterprise Linux Server release 6.7 (Santiago)。
** 数字に桁区切りのコンマを追加するサブルーチン 21 & 22 M...
あまり大きな数字を扱わないので、999,999 まで。
sub commagen {
my $nocomma = $_[0];
my $myup = int($nocomma/1000);
my $mydw = $nocomma - ($myup*1000);
my $withcomma = ","; # initialize
if($myup>0){
$withcomma = $myup . "," . sprintf("%03d", $mydw);
} else {
$withcomma = $mydw;
}
return $withcomma;
}
** LaTeXで、いや〜なことをする特殊記号を LaTeX の入力に変...
- ギリシャ文字や数式には対応していません。
- 前後に空白を入れてしまったのが気持ち悪いのだけれど……。
- \textasciitilde と \textasciicircum は上手く動かなかっ...
$username = latexsafe($username);
sub latexsafe{
my $unsafestring = $_[0];
$unsafestring =~ s/\\/ \\textbackslash /g;
$unsafestring =~ s/#/ \\# /g;
$unsafestring =~ s/\$/ \\\$ /g;
$unsafestring =~ s/%/ \\% /g;
$unsafestring =~ s/&/ \\& /g;
$unsafestring =~ s/_/ \\_ /g;
$unsafestring =~ s/{/ \\{ /g;
$unsafestring =~ s/}/ \\} /g;
$unsafestring =~ s/\|/ \\textbar /g;
$unsafestring =~ s/</ \\textless /g;
$unsafestring =~ s/>/ \\textgreater /g;
$unsafestring =~ s/>/ \\textgreater /g;
$unsafestring =~ s/~/ \\~{} /g;
# $unsafestring =~ s/~/ \\textasciitilde /g;
$unsafestring =~ s/\^/ \\^{} /g;
# $unsafestring =~ s/\^/ \\textasciicircum /g;
return $unsafestring;
}
|Today:&counter(today);|Yesterday:&counter(yesterday);|To...
終了行:
[[プログラムなどなど]]のつづき~
perl についてはこちらに移動(2016年2月21日)
#contents
*perl tips [#afa844d2]
**URIのリストから、それへのリンク付きのリストのhtmlファイ...
こんな感じのリスト(下)をリンク付きのリストのhtmlファイ...
in.txt
http://www.kit.ac.jp/
http://www.yahoo.co.jp/
http://www.google.co.jp/
makelink.pl
#!perl
print "<html>\n";
print "<body>\n";
print "<ul>\n";
while(<>){
chop;
print "<li><a href=\"$_\" target=\"_blank\">$_</a>\n";
}
print "</ul>\n";
print "</html>\n";
print "</body>\n";
使い方
perl makelink.pl <in.txt >out.txt
メールに貼り付けて Thunderbird ででも受け取ればできちゃう...
**タブ区切りテキストからカラムを抜き出す 16th March 2009 ...
タブ区切りテキストの「2列目」と「5列目」を抜き出す
first2and5.pl
#!perl
while(<>){
chop;
my @after = split /[\t]/;
print "@after[1]\t@after[4]\n";
}
@_ がなぜか上手く動かなかったので、配列名を明示することに...
動かなかったもの↓(2009年3月16日版)
#!perl
while(<>){
chop;
split /[\t]/;
print "@_[1]\t@_[4]\n";
}
使い方
perl first2and5.pl <in.txt >out.txt
これで26めがのファイルから必要な部分が取り出せて、1めがに...
**検索語を色付けしたhtmlファイルを出力する 23 May 2009 [#...
htmlファイルを検索して、検索語を蛍光マーカーで色付けした...
このpukiwikiで検索すると複数の検索語が色付けして表示され...
原理は<span>タグを利用して色付けするだけ~
本体部分のコードは下のようなもの
while( s/$keyword/1101TARGET_HERE1101/){}
while( s/1101TARGET_HERE1101/<span style=\"background-co...
出力例その1 → &ref(さんぷる-coloured.html); 出力例そ...
batch fileを利用して、ドラッグ&ドロップで使えるものを作...
おととい、某友人に、こんなのあるといいねえ、と言われて作...
その夜、firefoxのアドオンで同様の表示が実現できるとメール...
SearchWP
SearchBox Companion
です。
これを組み合わせると、
ページ内検索で、複数検索語を色分けしてくれます。
**複数のファイルの中の文字列を置換する 03 July 2009 & 16 ...
http://d.hatena.ne.jp/odz/20061218/1166499908 に従う
perl -pi -e 's|src="/|src"../|' * ← なぜか、上手くいかな...
バックアップファイルを作れと perl が言うのと、対象となる...
変換すべき文字列が複数あるときに対応するために、g オプシ...
上手くいった~
ということで
perl -pibak -e 's| |\t|g' *
これは、スペースひとつをタブへ変換、する~
(2013年11月16日)
** perl プログラムの頭に 21 March 2016 [#vde728c9]
#!/usr/bin/perl
もちろん、perl が別なところにあるなら、それにする
** hash 21 March 2016 [#n61673c1]
my %countrycode = (
"Afghanistan" => "Afghanistan",
"Albania" => "Albania",
"Algeria" => "Algeria",
"Andorra" => "Andorra",
……
"VirginIslandsBritish" => "Virgin Islands, British",
"VirginIslandsUS" => "Virgin Islands, U.S.",
"WallisandFutuna" => "Wallis and Futuna",
"Yemen" => "Yemen",
"Zambia" => "Zambia",
"Zimbabwe" => "Zimbabwe"
);
$nowcountry = $countrycode{VirginIslandsBritish};
で、参照できる。
** local time 21 March 2016 [#a6f1de77]
[[perlでYYYYMMDD形式の日付を得る>http://memo-off.blogspot...
$yyyymmdd は 20160321 のように~
$mydaymonthyear は 21 March 2016 のように~
$mon は 1月が「0」からなので注意。
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday,...
my $yyyymmdd = sprintf("%04d%02d%02d", $year + 1900, $mo...
my @monthname = ( January, February, March, April, May, ...
August, September, October, November, December);
my $mydaymonthyear = $mday . " " . $monthname[$mon] . " ...
** 乱数 21 March 2016 [#n3f355b3]
99999 までの自然数
my $randomnum = int(rand(99999));
** 分割して配列に収める 21 March 2016 [#oea22f3e]
- 区切り記号はかなり自由な場合を想定
- ここでは、コンマ(.)、ピリオド(,)、セミコロン(;)、...
- 空白文字以外を空白文字に置換し、その後1文字以上の空白...
- 配列を昇順にソート ← おまけ
- 収められた個数をカウント ← おまけ
my $inputnums = "何らかの文字列としてのデータ";
$inputnums =~ s/,/ /g;
$inputnums =~ s/\./ /g;
$inputnums =~ s/;/ /g;
$inputnums =~ s/:/ /g;
$inputnums =~ s/\t/ /g;
$inputnums =~ s/\n/ /g;
$inputnums =~ s/\r/ /g;
my @mynums = split(/ +/, $inputnums);
@mynums = sort {$a <=> $b} @mynums; # sort small to large
my $nummynum = @myunums;
** if 分岐 21 March 2016 [#d08d2d7d]
elsif であって、else if ではない~
else はなくてもよい
if(条件1){
……
}elsif(条件2){
……
}else{
……
}
** ファイルへの書き出し 21 March 2016 [#t2f1d11e]
- ファイルを開く=ファイルハンドルと結びつける
- ファイルハンドルに書く= print する、など
- ファイルを閉じる=ファイルハンドルを操作
open(DATAFILE, ">> $myoutfile") or die("error :$!");
(print で書く1)
print DATAFILE $mydaymonthyear;
(print で書く2:here document)
print DATAFILE << 'LATEXHAED';
内容
LATEXHAED
close(DATAFILE);
** here document 21 March 2016 [#j5aa5710]
そのまま、または、ほぼそのまま print する
出力先~
ここでは、DATAFILE に出力しているが、省くと STDOUT
end mark (ここでは「LATEXHAED」)
- シングルクォーテーションで囲むと、そのまま
- ダブルクォーテーションで囲むと、perl の変数が展開される
- 終りにはセミコロンを付けないので注意
print DATAFILE << 'LATEXHAED'; ← シングルクォーテーショ...
内容
LATEXHAED ← セミコロンなし
** wget でデータを取得する 21 March 2016 [#y68747f8]
[[ Linux&Perl→Perlメモ→ネットワークを使う→FTPダウンロード...
ほぼそのままですが……、pipe も使えるのです。ということで。
- 「-O -」標準出力への出力を指定
- 「-q」デバッグ情報を出力せず
- ダブルクォーテーションとシングルクォーテーションの使い...
open (myhtml, "wget -q -O - 'http://hoge.hoge.jp/hoge....
my @data = <myhtml>;
close (myhtml);
** pdf file を LaTeX で作成する 21 March 2016 [#tb80cd1a]
chdir("$myfullpdfdir");
system("latex $myfilename >> latexlog.log");
system("dvipdfmx $myfilename >> dvipdfmxlog.log");
- cgiプログラムではなく、ローカルで作成するなら、system ...
- ワタシの環境では、ローカルでは platex が動いたが、cgi ...
TeXLive(texlive.x86_64 2007-60.el6_7 など)、
Red Hat Enterprise Linux Server release 6.7 (Santiago)。
** 数字に桁区切りのコンマを追加するサブルーチン 21 & 22 M...
あまり大きな数字を扱わないので、999,999 まで。
sub commagen {
my $nocomma = $_[0];
my $myup = int($nocomma/1000);
my $mydw = $nocomma - ($myup*1000);
my $withcomma = ","; # initialize
if($myup>0){
$withcomma = $myup . "," . sprintf("%03d", $mydw);
} else {
$withcomma = $mydw;
}
return $withcomma;
}
** LaTeXで、いや〜なことをする特殊記号を LaTeX の入力に変...
- ギリシャ文字や数式には対応していません。
- 前後に空白を入れてしまったのが気持ち悪いのだけれど……。
- \textasciitilde と \textasciicircum は上手く動かなかっ...
$username = latexsafe($username);
sub latexsafe{
my $unsafestring = $_[0];
$unsafestring =~ s/\\/ \\textbackslash /g;
$unsafestring =~ s/#/ \\# /g;
$unsafestring =~ s/\$/ \\\$ /g;
$unsafestring =~ s/%/ \\% /g;
$unsafestring =~ s/&/ \\& /g;
$unsafestring =~ s/_/ \\_ /g;
$unsafestring =~ s/{/ \\{ /g;
$unsafestring =~ s/}/ \\} /g;
$unsafestring =~ s/\|/ \\textbar /g;
$unsafestring =~ s/</ \\textless /g;
$unsafestring =~ s/>/ \\textgreater /g;
$unsafestring =~ s/>/ \\textgreater /g;
$unsafestring =~ s/~/ \\~{} /g;
# $unsafestring =~ s/~/ \\textasciitilde /g;
$unsafestring =~ s/\^/ \\^{} /g;
# $unsafestring =~ s/\^/ \\textasciicircum /g;
return $unsafestring;
}
|Today:&counter(today);|Yesterday:&counter(yesterday);|To...
ページ名: