PerlとJavascriptの連携でウェブコンテンツを表示させる方法

Viewed: 07:39:00 in December 7, 2019

Posted: December 29, 2015
WordPressの記事をアーカイブ化したものです。

この記事を書いた人
「牧岡ふうふ堂」オーナー。博士(工学)。
酒都圏在住。
某地方の国立系工業大学でアシスタントをしていました。 専門は有機反応・金属錯体(主に希土類)・π共役系。
twitterアカウントは@makiokafufudo(お仕事用)、@ymakioka(個人用)です。

忘れないうちにメモ。

JavascriptとPerlを組み合わせ、アクセスランキングなどをWebに表示させたいときなどに使います。

例えば、このサイトにある”http_output.pl”というファイル名のPerlスクリプトを呼び出し、Perlスクリプトから受け取ったデータをHTMLとして表示する場合、

Javascript側: HTMLソースに埋め込みます。

<script type=”text/Javascript” src=”http://www.nanoniele.jp/cgi-bin/http_output.pl”> </script>

Perl側: ファイルとしてしかるべきところ(大体cgi-binディレクトリ)に置いときます。本ケースではファイル名は”http_output.pl”。

#!/usr/bin/perl

use CGI qw(:standard);

use strict;

#use Encode;

#----- パラメータ取得 ここから

#my $name = param(‘name’);

#my $case = param(‘case’);

#----- ここまで パラメータ取得

#----- 出力したい文字列 ここから

my $outdata = “Test”;

#----- ここまで出力したい文字列

#----- Shift-JISからUFT-8に変換 ここから

#$outdata = decode(‘Shift_JIS’, $outdata); #Shift-JISからデコード

#$outdata = encode(‘UTF-8’, $outdata); #UTF-8にエンコード

#----- ここまで Shift-JISからUFT-8に変換

#----- JavascriptにHTMLソースを渡す ここから

print “Content-type: application/x-javascript\n\n”;

print “document.write(‘$outdata’)\n\n”;

#----- ここまで JavascriptにHTMLソースを渡す

exit;

Perl側の肝の部分は、”JavascriptにHTMLソースを渡す”の部分です。

“Shift-JISからUFT-8に変換”の部分は、文字化けを気にしなければ不要です。必要であれば “”を外して適宜アレンジしてください。冒頭に”use Encode;”をお忘れなく。

Perl側で、作りたいHTMLを複数種作成させたい場合は、例えばJavascript側を

<script type=”text/Javascript” src=”http://www.nanoniele.jp/cgi-bin/http_output.pl?name=test1&case=black”> </script>

と、”?name=test1&case=black”を加えるなどしてPerl側へパラメータを渡し、Perl側で条件分けすればいいと思います。

 

あわせてどうぞ

アーカイブ化したWordPress記事
よく読まれている記事をアーカイブ化しました。

Avogadroで分子モデリング
分子の三次元モデルを描くのに、私はAvogadroを使ってます。

H4Oの構造が見つかった(ただしですね
分子ではないですよ。

H4Oの構造が見つかった (2)
分子ではないですよ。

[水素水] H6Oのエネルギー計算をやってみた
むりくりにやりました。

[水素水] H4Oが何色なのか知りたくて計算した。
無理くりTDDFT 。

[水素水] H6Oが何色なのか計算してみた
無理くりTDDFT 。

[水素水] H4Oが何色なのか知りたくて計算した(2)
無理くりTDDFT 。

H3O4なるものを見かけたので軌道を可視化したかった(2)
もはや質量保存の法則なんぞどうでもいいらしい 。

H3O4なるものを見かけたので軌道を可視化したかった
もはや質量保存の法則なんぞどうでもいいらしい 。

[水素水] HnOがどのくらい不安定かたくさん計算しました
あくまでもネタとしてお読みください。