zxcv0000 の回答履歴
- Perlを端末で使う
以前よりCGIでPerlをよく利用していたのですが、現在サーバーの保守や管理で簡単なシェルを使う機会が多くなりました。しかし、シェルスクリプトになるとちょっと難しくて勉強する時間がなくできるだけPerlでいろいろな処理をしたと思っています。 質問は、PerlをGnome端末などから操作するにはどうしたらよいのでしょうか?いくつかの処理をPerlで書いて $ perl -w /home/tinte/test_perl.pl みたいな感じで処理はできますが、シェルのように絶対パスではなくコマンドをそのまま記述することは可能でしょうか?例えば上記の処理を $ perl -w test_perl.pl のような感じで短縮できればよいなと思っています。どこかにリンクを貼ったり設定を変えればできそうな気がしていますが、もしわかる方がいましたらおしえてください。 またPerlのコマンドをそのまま端末で使うことはできないのでしょうか? 周囲にわかる人間が全くいないのでいろいろヒントをもらえるとうれしいです。よろしくお願いします。
- guess_encoding()の挙動が意味不明
以下のプログラムを作成しました。 #! /usr/bin/perl - # #文字コードが分からない文字列を、 #文字コードを判別した上で、UTF-8に変換して表示 # # #テストを行うファイル my $fh="shift-JIS.txt"; use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); use Encode; use Encode::Guess; my @all_encodings=Encode->encodings(":all"); ・・・A open IN,$fh; our @data=<IN>; close IN; my $q= new CGI; print $q->header(-charset=>'utf8'), $q->start_html(-title=>'Encode::Guessの使い方', -lang=>'ja-JP', -charset=>'utf8'), $q->p('Encodeモジュールがサポートしている文字コード形式を対象に、<br> テストファイルの文字コードを判別した上で、UTF-8に変換してUTF-8のHTMLファイル中で表示するCGIです。'); our ($check,$decoder); foreach my $i (@all_encodings) { ・・・B if($i ne "UCS-2BE" and $i ne "UTF-16" and $i ne "UTF-16BE" and $i ne "UTF-32") { ・・・C $check=1; foreach my $j (@data) { $decoder=guess_encoding($j,$i); ・・・D $check=0 unless ref($decoder); } print "$check $i<br>\n"; if($check==1) { foreach my $j (@data) { $j=$decoder->decode($j); $j=encode('utf-8', $j); print "$j<br>\n"; } } } } print $q->end_html; D式の$iを"shiftjis"、"euc-jp"でハードコードしてテストをすると、前者ではファイルの中身が書き出され、後者ではタイトル以外表示されませんでした。意図された通りの動作です。 次に、A式でEncodeがサポートしている文字コードを全て@all_encodingsに格納し、その一つ一つをB式のforeach文でD式に代入しています。 想定した挙動は $i="shiftjis"の時のみ $check=1で文字列を表示し、 それ以外では $check=0で文字列は表示されない というものです。 ところが結果は、 0 7bit-jis 0 AdobeStandardEncoding 0 AdobeSymbol 0 AdobeZdingbat 0 ascii 0 ascii-ctrl 0 big5-eten 0 big5-hkscs 0 cp1006 1 cp1026 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa 0 cp1047 1 cp1250 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa 0 cp1251 0 cp1252 1 cp1253 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa (続く) というように$check=1を取る文字コードが幾つかあり、不思議なことには表示された文字列が全て全く同じ文字化けをおこしています。$i="shiftjis"の時でも同じです。ハードコートしていた時には、"shiftjis"の時には正しい表示が行われていました。 ましてや、C式ではじいた2種の文字コードに至っては、他の文字コードと同様に処理を行うとエラーが出てプログラムが止まるから、はじかざるを得ませんでした。 ちなみにそのエラーメッセージを表示すると、 UTF-16:Unrecognised BOM 62c2 at O:/usr/lib/Encode/Guess.pm line 139. といった感じです。 どうしてこうなるのでしょう。 というか、どうすればキチンときどうするようになるでしょう。 お手数をおかけします。
- HTMLで倍角は表示できますか?
HTMLで倍角文字(縦倍角、横倍角、4倍角)って表示出来るのでしょうか?それ専用のタグとかありますか?スタイルシートを使用したら可能とか?わかる方がいらっしゃいましたら教えてください。
- guess_encoding()の挙動が意味不明
以下のプログラムを作成しました。 #! /usr/bin/perl - # #文字コードが分からない文字列を、 #文字コードを判別した上で、UTF-8に変換して表示 # # #テストを行うファイル my $fh="shift-JIS.txt"; use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); use Encode; use Encode::Guess; my @all_encodings=Encode->encodings(":all"); ・・・A open IN,$fh; our @data=<IN>; close IN; my $q= new CGI; print $q->header(-charset=>'utf8'), $q->start_html(-title=>'Encode::Guessの使い方', -lang=>'ja-JP', -charset=>'utf8'), $q->p('Encodeモジュールがサポートしている文字コード形式を対象に、<br> テストファイルの文字コードを判別した上で、UTF-8に変換してUTF-8のHTMLファイル中で表示するCGIです。'); our ($check,$decoder); foreach my $i (@all_encodings) { ・・・B if($i ne "UCS-2BE" and $i ne "UTF-16" and $i ne "UTF-16BE" and $i ne "UTF-32") { ・・・C $check=1; foreach my $j (@data) { $decoder=guess_encoding($j,$i); ・・・D $check=0 unless ref($decoder); } print "$check $i<br>\n"; if($check==1) { foreach my $j (@data) { $j=$decoder->decode($j); $j=encode('utf-8', $j); print "$j<br>\n"; } } } } print $q->end_html; D式の$iを"shiftjis"、"euc-jp"でハードコードしてテストをすると、前者ではファイルの中身が書き出され、後者ではタイトル以外表示されませんでした。意図された通りの動作です。 次に、A式でEncodeがサポートしている文字コードを全て@all_encodingsに格納し、その一つ一つをB式のforeach文でD式に代入しています。 想定した挙動は $i="shiftjis"の時のみ $check=1で文字列を表示し、 それ以外では $check=0で文字列は表示されない というものです。 ところが結果は、 0 7bit-jis 0 AdobeStandardEncoding 0 AdobeSymbol 0 AdobeZdingbat 0 ascii 0 ascii-ctrl 0 big5-eten 0 big5-hkscs 0 cp1006 1 cp1026 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa 0 cp1047 1 cp1250 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa 0 cp1251 0 cp1252 1 cp1253 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa (続く) というように$check=1を取る文字コードが幾つかあり、不思議なことには表示された文字列が全て全く同じ文字化けをおこしています。$i="shiftjis"の時でも同じです。ハードコートしていた時には、"shiftjis"の時には正しい表示が行われていました。 ましてや、C式ではじいた2種の文字コードに至っては、他の文字コードと同様に処理を行うとエラーが出てプログラムが止まるから、はじかざるを得ませんでした。 ちなみにそのエラーメッセージを表示すると、 UTF-16:Unrecognised BOM 62c2 at O:/usr/lib/Encode/Guess.pm line 139. といった感じです。 どうしてこうなるのでしょう。 というか、どうすればキチンときどうするようになるでしょう。 お手数をおかけします。
- table要素の周囲に、余分なマージンができる
ブラウザは、IE6.0~IE8.0です。body要素、table要素のマージン、パディングをリセットしているにも関わらず、table要素の周囲に、余分なマージンが発生します(文書型宣言を、HTML4.0にしても同様)。どのようにすれば、余分なマージンを削除できるでしょうか?どなたか、おわかりになりますか? ■■↓HTML■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "?http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="?http://www.w3.org/1999/xhtml"? lang="ja" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="keywords" content="あいうえお" /> <meta name="description" content="あいうえお" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <link rel="INDEX" href="./index.html" /> <link rel="stylesheet" href="./base.css" type="text/css" media="all" /> <link rev="MADE" href="mailto:aaa@yahoo.co.jp" /> <title>あいうえお</title> </head> <body> <table> <br> <td>aaa </td> </br> </table> </body> </html> ■■↓css■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ @charset "utf-8"; *{ margin: 0; padding: 0; } table{ margin: 0; padding: 0; width:800px; color:#ffff00; background-color:#000000; }
- ベストアンサー
- HTML
- noname#112006
- 回答数1
- guess_encoding()の挙動が意味不明
以下のプログラムを作成しました。 #! /usr/bin/perl - # #文字コードが分からない文字列を、 #文字コードを判別した上で、UTF-8に変換して表示 # # #テストを行うファイル my $fh="shift-JIS.txt"; use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); use Encode; use Encode::Guess; my @all_encodings=Encode->encodings(":all"); ・・・A open IN,$fh; our @data=<IN>; close IN; my $q= new CGI; print $q->header(-charset=>'utf8'), $q->start_html(-title=>'Encode::Guessの使い方', -lang=>'ja-JP', -charset=>'utf8'), $q->p('Encodeモジュールがサポートしている文字コード形式を対象に、<br> テストファイルの文字コードを判別した上で、UTF-8に変換してUTF-8のHTMLファイル中で表示するCGIです。'); our ($check,$decoder); foreach my $i (@all_encodings) { ・・・B if($i ne "UCS-2BE" and $i ne "UTF-16" and $i ne "UTF-16BE" and $i ne "UTF-32") { ・・・C $check=1; foreach my $j (@data) { $decoder=guess_encoding($j,$i); ・・・D $check=0 unless ref($decoder); } print "$check $i<br>\n"; if($check==1) { foreach my $j (@data) { $j=$decoder->decode($j); $j=encode('utf-8', $j); print "$j<br>\n"; } } } } print $q->end_html; D式の$iを"shiftjis"、"euc-jp"でハードコードしてテストをすると、前者ではファイルの中身が書き出され、後者ではタイトル以外表示されませんでした。意図された通りの動作です。 次に、A式でEncodeがサポートしている文字コードを全て@all_encodingsに格納し、その一つ一つをB式のforeach文でD式に代入しています。 想定した挙動は $i="shiftjis"の時のみ $check=1で文字列を表示し、 それ以外では $check=0で文字列は表示されない というものです。 ところが結果は、 0 7bit-jis 0 AdobeStandardEncoding 0 AdobeSymbol 0 AdobeZdingbat 0 ascii 0 ascii-ctrl 0 big5-eten 0 big5-hkscs 0 cp1006 1 cp1026 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa 0 cp1047 1 cp1250 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa 0 cp1251 0 cp1252 1 cp1253 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa (続く) というように$check=1を取る文字コードが幾つかあり、不思議なことには表示された文字列が全て全く同じ文字化けをおこしています。$i="shiftjis"の時でも同じです。ハードコートしていた時には、"shiftjis"の時には正しい表示が行われていました。 ましてや、C式ではじいた2種の文字コードに至っては、他の文字コードと同様に処理を行うとエラーが出てプログラムが止まるから、はじかざるを得ませんでした。 ちなみにそのエラーメッセージを表示すると、 UTF-16:Unrecognised BOM 62c2 at O:/usr/lib/Encode/Guess.pm line 139. といった感じです。 どうしてこうなるのでしょう。 というか、どうすればキチンときどうするようになるでしょう。 お手数をおかけします。
- guess_encoding()の挙動が意味不明
以下のプログラムを作成しました。 #! /usr/bin/perl - # #文字コードが分からない文字列を、 #文字コードを判別した上で、UTF-8に変換して表示 # # #テストを行うファイル my $fh="shift-JIS.txt"; use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); use Encode; use Encode::Guess; my @all_encodings=Encode->encodings(":all"); ・・・A open IN,$fh; our @data=<IN>; close IN; my $q= new CGI; print $q->header(-charset=>'utf8'), $q->start_html(-title=>'Encode::Guessの使い方', -lang=>'ja-JP', -charset=>'utf8'), $q->p('Encodeモジュールがサポートしている文字コード形式を対象に、<br> テストファイルの文字コードを判別した上で、UTF-8に変換してUTF-8のHTMLファイル中で表示するCGIです。'); our ($check,$decoder); foreach my $i (@all_encodings) { ・・・B if($i ne "UCS-2BE" and $i ne "UTF-16" and $i ne "UTF-16BE" and $i ne "UTF-32") { ・・・C $check=1; foreach my $j (@data) { $decoder=guess_encoding($j,$i); ・・・D $check=0 unless ref($decoder); } print "$check $i<br>\n"; if($check==1) { foreach my $j (@data) { $j=$decoder->decode($j); $j=encode('utf-8', $j); print "$j<br>\n"; } } } } print $q->end_html; D式の$iを"shiftjis"、"euc-jp"でハードコードしてテストをすると、前者ではファイルの中身が書き出され、後者ではタイトル以外表示されませんでした。意図された通りの動作です。 次に、A式でEncodeがサポートしている文字コードを全て@all_encodingsに格納し、その一つ一つをB式のforeach文でD式に代入しています。 想定した挙動は $i="shiftjis"の時のみ $check=1で文字列を表示し、 それ以外では $check=0で文字列は表示されない というものです。 ところが結果は、 0 7bit-jis 0 AdobeStandardEncoding 0 AdobeSymbol 0 AdobeZdingbat 0 ascii 0 ascii-ctrl 0 big5-eten 0 big5-hkscs 0 cp1006 1 cp1026 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa 0 cp1047 1 cp1250 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa 0 cp1251 0 cp1252 1 cp1253 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa (続く) というように$check=1を取る文字コードが幾つかあり、不思議なことには表示された文字列が全て全く同じ文字化けをおこしています。$i="shiftjis"の時でも同じです。ハードコートしていた時には、"shiftjis"の時には正しい表示が行われていました。 ましてや、C式ではじいた2種の文字コードに至っては、他の文字コードと同様に処理を行うとエラーが出てプログラムが止まるから、はじかざるを得ませんでした。 ちなみにそのエラーメッセージを表示すると、 UTF-16:Unrecognised BOM 62c2 at O:/usr/lib/Encode/Guess.pm line 139. といった感じです。 どうしてこうなるのでしょう。 というか、どうすればキチンときどうするようになるでしょう。 お手数をおかけします。
- 文字の数え方
use utf8; を宣言すると、内部に記述されるリテラルにutf8フラグが立てられて、例えばlengthを用いて文字数を数えた場合に、多バイト文字であっても1文字を1とカウントしてくれるそうです。 次のコードでは、文字列の文字数を数えてみました。。 #! /usr/bin/perl use utf8; use Encode; my $str="最初にUTF-8で表示します。次にshift-JISで表示します。"; print length $str; print "\n"; $str=encode("shiftjis",$str); print length $str; print "\n"; 実行結果は以下の通りです。 33 52 文字列がUTF-8の場合は、シングルバイト文字、多バイト文字関係なく1文字で計算するので33文字です。これに対してshift-JISの場合は、多バイト文字を2文字でカウントするので52文字になります。 なるほど。 しかし、次がよく分からないんですけど、 use utf8; をコメントではずすと、その実行結果は以下のようになりました。 71 76 これはどういう計算なのでしょうか?
- guess_encoding()の挙動が意味不明
以下のプログラムを作成しました。 #! /usr/bin/perl - # #文字コードが分からない文字列を、 #文字コードを判別した上で、UTF-8に変換して表示 # # #テストを行うファイル my $fh="shift-JIS.txt"; use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); use Encode; use Encode::Guess; my @all_encodings=Encode->encodings(":all"); ・・・A open IN,$fh; our @data=<IN>; close IN; my $q= new CGI; print $q->header(-charset=>'utf8'), $q->start_html(-title=>'Encode::Guessの使い方', -lang=>'ja-JP', -charset=>'utf8'), $q->p('Encodeモジュールがサポートしている文字コード形式を対象に、<br> テストファイルの文字コードを判別した上で、UTF-8に変換してUTF-8のHTMLファイル中で表示するCGIです。'); our ($check,$decoder); foreach my $i (@all_encodings) { ・・・B if($i ne "UCS-2BE" and $i ne "UTF-16" and $i ne "UTF-16BE" and $i ne "UTF-32") { ・・・C $check=1; foreach my $j (@data) { $decoder=guess_encoding($j,$i); ・・・D $check=0 unless ref($decoder); } print "$check $i<br>\n"; if($check==1) { foreach my $j (@data) { $j=$decoder->decode($j); $j=encode('utf-8', $j); print "$j<br>\n"; } } } } print $q->end_html; D式の$iを"shiftjis"、"euc-jp"でハードコードしてテストをすると、前者ではファイルの中身が書き出され、後者ではタイトル以外表示されませんでした。意図された通りの動作です。 次に、A式でEncodeがサポートしている文字コードを全て@all_encodingsに格納し、その一つ一つをB式のforeach文でD式に代入しています。 想定した挙動は $i="shiftjis"の時のみ $check=1で文字列を表示し、 それ以外では $check=0で文字列は表示されない というものです。 ところが結果は、 0 7bit-jis 0 AdobeStandardEncoding 0 AdobeSymbol 0 AdobeZdingbat 0 ascii 0 ascii-ctrl 0 big5-eten 0 big5-hkscs 0 cp1006 1 cp1026 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa 0 cp1047 1 cp1250 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa 0 cp1251 0 cp1252 1 cp1253 b£b2boE[NAE CnebEnK±ib§b\b§b¨aa (続く) というように$check=1を取る文字コードが幾つかあり、不思議なことには表示された文字列が全て全く同じ文字化けをおこしています。$i="shiftjis"の時でも同じです。ハードコートしていた時には、"shiftjis"の時には正しい表示が行われていました。 ましてや、C式ではじいた2種の文字コードに至っては、他の文字コードと同様に処理を行うとエラーが出てプログラムが止まるから、はじかざるを得ませんでした。 ちなみにそのエラーメッセージを表示すると、 UTF-16:Unrecognised BOM 62c2 at O:/usr/lib/Encode/Guess.pm line 139. といった感じです。 どうしてこうなるのでしょう。 というか、どうすればキチンときどうするようになるでしょう。 お手数をおかけします。
- プログラミングの実行について
テキストエディタで、下記の HTML ソースを入力して、保存して、ブラウザで表示してみましょう。 <html> <head> <title>サンプル</title> </head> <body> <script type="text/javascript"> <!-- document.write("Hello World!!"); // --> </script> </body> </html> とウェブに書いてあったのですが、このプログラミングを実行するためにメモ帳にコピーしてエンター押してみたのですが、Hello World!!と表示されません。 「テキストエディタで、下記の HTML ソースを入力し保存してブラウザで表示」とはどういう意味なのでしょうか? ほんとに初心者ですいません。
- ベストアンサー
- JavaScript
- to-ya-blog
- 回答数3
- JavaScriptでDB接続できなくて、困っています><
JavaScript初心者です。 ローカルのSQLServerExpressに以下の様に接続にいくと「存在しないか、アクセスが拒否されました」となります。 ちなみに、ManagementStudioではSQL認証で接続できますのでローカルのデータベースに問題はないと思います。また他のDBサーバーのデータベースには接続できますので、Script文にも問題はないと思われます。 localhost\SQLEXPRESSの部分が怪しいような・・・ localhost部分をコンピュータ名やIPに変えてもダメでした。 \を/に変えてもダメでした。 ご存知の方いましたらご教授下さい>< var db; function DBConnect(){ db=new ActiveXObject("ADODB.Connection"); db.Open("Driver={SQL Server};" + "server=localhost\SQLEXPRESS; database=***; uid=***; pwd=***;");} しょうもない間違いだったら、すいません。。。^^;
- 締切済み
- JavaScript
- brq12000
- 回答数2
- for ( … ){}の処理ができません
いままで正常に動いていた cgi(perl)に次のようなセンテンス for ( $cnt=0 ; $cnt<2 ; $cnt++) { my $before = "snow06b.gif"; #変換前の名前 my $after = "snow06x.gif"; #変換後の名前 rename($before,$after); my $before = "snow06x.gif"; #変換前の名前 my $after = "snow06b.gif"; #変換後の名前 rename($before,$after); } を追加したところ、cgi 全体が動かなくなってしまいました。 for ( … ){ } の中の処理はこの cgi の他の箇所でも行っていて、正常に実行されることが分かっています。中の処理をはずして for ( $cnt=0 ; $cnt<2 ; $cnt++) { } だけにしてもこの cgi の他の処理を実行しなくなります。自分のパソコンの中にある他のperl のプログラムの中のループの処理と見比べてもどこが悪いのか分かりません。何が原因なのかお教え願えれば幸いです。 初歩的な質問で申し訳ありません。
- 2バイト文字のスペースをあるかチェックしたい
フォームcgiからの内容に2バイトのスペース(空白)「 」が入っているかのチェックをしたいのですが うまくいきません。 &emsp;を入れてみたのですが、違うようでした。 (ここから) if($in{'comment'} !~ /(&emsp;)/){ $error_msg .= "愛犬の好きな食材を2つの間が全角スペースではありません。<br>"; } (ここまで) これ以上手詰まりとなってしまいました。
- Makefileについて
同じディレクトリに、同名のa.plとa.cファイルが存在します。 それぞれは単独では問題なく動きます。 しかし、Makefileを使ってこれらのファイルを一緒に実行させたいのですが、make allrunでa.pl、a.cが実行された後に make: *** [allrun] エラー 14 と出てしまいます。 結果的には全て実行できた形になるのですが、エラーと出ているのでどうも不安です。 勉強中の身なので説明がうまくいっていないと思いますが、どうやればよいのか教えてください。 Makefileの中身は CC = gcc all:a a a:a.c $(CC) -o a a.c -lm allrun:a a ./a.pl ./a.out clean: -rm ./a -rm ./a です。
- 2バイト文字のスペースをあるかチェックしたい
フォームcgiからの内容に2バイトのスペース(空白)「 」が入っているかのチェックをしたいのですが うまくいきません。 &emsp;を入れてみたのですが、違うようでした。 (ここから) if($in{'comment'} !~ /(&emsp;)/){ $error_msg .= "愛犬の好きな食材を2つの間が全角スペースではありません。<br>"; } (ここまで) これ以上手詰まりとなってしまいました。
- Web標準のエンコードについて(Html,Java)
Webアプリケーションのエンコードについて教えてください。 エンコードには「Shift-JIS」と「UTF-8」などがありますが、 Webアプリケーションの標準として主に使用されるコードは何でしょうか? googleなら「UTF-8」、教えてgooなら「EUC」という風に指定が分かれているのですが、開発者側としては何を目的として意識してエンコードの指定を行うべきなのでしょうか?
- 振り分けcgiについて
現在下記のように書かれているcgiでトップページの振り分けをしています。今までは各htmに飛ばしていたのですが、今度モバイルのみcgi へ飛ばしたいのですが、i.htmの部分をmi.cgiと書き換えてもうまく飛びません。どうしたらcgiへ飛ぶようになるのでしょうか? $vjump='.i.htm'; #SoftBank用 $ijump='./i.htm'; #i-MODE用 $ejump = './i.htm'; #EZWEB用 $pcjump = './index.htm'; #PC,その他 $USR = $ENV{'HTTP_USER_AGENT'}; if ($USR =~ /^DoCoMo/) { $lct = $ijump; } elsif ($USR =~ /UP\.Browser/) { $lct = $ejump; } elsif ($USR =~ /^SoftBank/ || $USR =~ /^Vodafone/ || $USR =~ /^J-PHONE/) { $lct = $vjump; } else { $lct = $pcjump; } &go; exit; sub go { print "Content-type: text/html\n\n"; open(IN, $lct); while (<IN>) { print; } close(IN); } exit;
- $obj->decode($bytes)って何?
Encode.pmのPODを読んでいます。その一文です。 [$obj =] find_encoding(ENCODING) Returns the encoding object corresponding to ENCODING. Returns undef if no matching ENCODING is find. This object is what actually does the actual (en|de)coding. $utf8 = decode($name, $bytes); is in fact $utf8 = do{ $obj = find_encoding($name); croak qq(encoding "$name" not found) unless ref $obj; $obj->decode($bytes) }; with more error checking. まず This object is what actually does the actual (en|de)codeing. 直訳すると、「このオブジェクトは実際のエンコードやデコードを実際に行うものです。」となります。実際の、実際の、と二つ並ぶのはあまり語感が良くないと思いますが、でもこのPODを書いたのは文学者ではないですから、原文の方に問題があるのではないかと思います。 次に「このオブジェクト」とは何を指しているのでしょう。find_encoding関数のことを言っているのでしょうか? というのは、下に $utf8 = decode($name, $bytes); は実際には、 $utf8 = do{ $obj = find_encoding($name); croak qq(encoding "$name" not found) unless ref $obj; $obj->decode($bytes) }; だと書いています。{}の中で一番重要なのはfind_encoding関数だと言いたいのではないかと・・・ そうすると This object is what actually does the actual (en|de)codeing. は、 「実際にエンコードやデコードを行っているのはこの関数です。」 と訳するのが正しいでしょうか? 最後に、 $obj->decode($bytes) $objという文字コードで記述されている$bytesという文字列をutf-8に変換したもの、という意味なはず。 でも浅学な私には、どのような文法でこのコードが書かれているか分かりません。 Perlにおいて、変数と言えば$objだったり@objだったり%objだったりします。そしてそのリファレンスはこれら変数の前に「\」を付ければ良くて、リファレンスはスカラー変数となるから、 $refobj=\($|@|%)obj; となります。 元の変数が(@|%)objの場合、元の変数の一要素を取り出すには、 $obj([index]|{'index'})=$refobj->index; となります。 これが私の知っている矢印記法の唯一の使い方です。 お手数ですが、どなたか教えていただけないでしょうか?
- 解決法が見つかりません。
フォームで入力した内容を担当者宛てにメールを送るプログラムを作っています。 以下のエラー文が出ました。 Can't locate Jcode/_Classic.pm in @INC (@INC contains: /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 .) at Jcode.pm line 40. 何となく、「Jcode/_Classic.pm」が見つからない事は解るのですが、コレが何なのか、どこに何をどうすればいいのか全くわかりません。
- CGIでjcode.plを読み込めなくなりました
さんざん検索をかけて色々試したのですが、どうしても解決できず どなたかご存知のかた、教えてください。よろしくお願い致します。 つい昨日までちゃんと動いていたCGIが突然 「jcode.plがありません」 と訴えてきました。 4月にサーバーを乗換え丸2ヶ月、問題なく動いていたのに 突然です。何がなんだか分かりません。 もちろん、このCGIに関わるファイルは一切いじっておりません。 自分なりに検討した結果 引っかかっているのは以下のコード # 漢字コード変換ライブラリを読み込む if (-f "jcode.pl") { require "jcode.pl"; } else { &errexit("jcode.plがありません。\n"); } -略- &jcode'convert(*tmp, $kcode_cgi); このふたつです。jcode.plを読み込めない為にもれなく後出の呪文が効かないんだろうなという事は推測しているのですが。 このためフルパスでも試しましたが変化なし。 この読み込みをしなければ、CGIは取りあえず表示します。 なので、日本語変換プログラム以外は正常に動作しているようです。 どなたか同じような経験の有る方いらっしゃいませんか? アドバイスよろしくお願い致します。