【Perl 】初心者コーナーPart7
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい
01/09/12 13:04ID:???1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。
参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://corn.2ch.net/test/read.cgi?bbs=php&key=988809842&ls=50
CGIの質問はこちら【CGIだけど、なんか質問ある?part3】
http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833&ls=50
過去ログ、その他の役立ち情報は>>2-5を見よう。
0206マヌケ初心者
01/09/22 09:47ID:1q1.uifgレスありがとうございました
おっしゃる通りスキンでなんとか・・と思ったのですが
widthで幅きめても結局書き込む時に改行されなかったら
横にのびちゃうんですよ
色々調べ回って他のテスト板試してみたんですが
どれも伸びてました(w
紹介して頂いたサイト見てきます
ありがとうございました。
0207204
01/09/22 10:02ID:???ありがとうございます。
少しずつ勉強したいと思います
0208名無しさん@お腹いっぱい。
01/09/22 12:11ID:EJpCVqks<data>〜</data>
<data>〜</data>
…
</list>
というデータをXML::Generatorで作ろうと思っています。
与えられたデータ1行→<data>〜</data>に変換、で、
print "<list>"\n
while(<>){
my $xml = new XML::Generator;
$xml->data(…);
}
print "</list>"\n
のような処理を考えたのですが、これで良い物でしょうか?
不安なのは、while()の中でnewして良いのかなぁ?
freeとかってしなくてよいのかなぁ?という点です。
#根本的にかっちょわるいことしてたらやだなぁとも思う
0209名無しさん@お腹いっぱい。
01/09/22 16:17ID:???ガベージコレクターがあるので問題なし。
ちなみに new なら delete でしょ?
0210名無しさん@お腹いっぱい。
01/09/22 16:24ID:EJpCVqksなるほど。そうだったのですか! それなら安心です。
そして、newに対応するのはdeleteなのですね。恥。
0211-
01/09/22 16:41ID:X9qGQ5PUhttp://members.tripod.co.jp/bingo852/
0212名無しさん@お腹いっぱい。
01/09/22 16:43ID:???パス名付きで取得するにはどうやるんでしょうか???
0213名無しさん@お腹いっぱい。
01/09/22 16:44ID:???0214名無しさん@お腹いっぱい。
01/09/22 16:58ID:u4MHoQsYどうやるんでしたっけ?
perl -e 'use LWP::UserAgent;'
とかやってエラーなければインストールされてるって判断して
いいんでしょうか?
0215名無しさん@お腹いっぱい。
01/09/22 17:55ID:bcGEWw7sWindows上で動かしているとflockとか使用できませんよね
flock以外にもWindows上だと使用できないものってありますか?
0216名無しさん@お腹いっぱい。
01/09/22 17:56ID:???0217名無しさん@お腹いっぱい。
01/09/22 18:12ID:UPWBdoisWindows上のPerlとかでsubstrとかって使えんの?
0218名無しさん@お腹いっぱい。
01/09/22 18:18ID:.Ro0S1Bw一行で書くにはどうすればいいですか?
0219名無しさん@お腹いっぱい。
01/09/22 18:22ID:???use File::Find;
find sub { push @list, $File::Find::name }, ".";
>>214
perl -MLWP::Simple -e 'print $LWP::Simple::VERSION'
perldoc LWP::Simple
等。
>>215
WinNT/2000ではflock使える。
環境限定されるものは他にもある。
>>217
問題無い。
0220名無しさん@お腹いっぱい。
01/09/22 18:23ID:B3IfreL6やってみればいいじゃん
0221名無しさん@お腹いっぱい。
01/09/22 18:29ID:???use File::Find;
find sub { push @list, $File::Find::name if /\.html$/ }, ".";
>>218
map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [$_, lc] } @list;
0222名無しさん@お腹いっぱい。
01/09/22 18:34ID:???0223名無しさん@お腹いっぱい。
01/09/22 19:38ID:u4MHoQsY作ろうとしているのですが、長いページになると止まってしまいます。
正規表現で扱える文字長って最大値が決まってるのでしょうか。
while( $str =~ /(<img [^>]*src="?)([^"]+)("?.*?>)/isg ){
$tag1 = $1;
$img = $2;
$tab2 = $3;
$str =~ s/$tag1$img$tag2//i;
print $img. "\n";
}
1行1行処理すれば問題ないのですが、
<img
src="〜">
というようなものもあるので
0224223
01/09/22 19:48ID:u4MHoQsYすいません
while( $str =~ /(<img [^>]*src="?)([^"]+)("?.*?>)/isg ){
じゃなくて
while( $str =~ /(<img[ \r\n][^>]*src="?)([^"> ]+)("?.*?>)/isg ){
ですね。最初の<imgから最後までひっぱってた。^^;
馬鹿長いページでエラーが起きるのは同じです。
0225名無しさん@お腹いっぱい。
01/09/22 19:50ID:???ありがとうございます!!! 感激っす!
0226名無しさん@お腹いっぱい。
01/09/22 21:01ID:???それの原因はわかんないけど
タグ抜き出しツールを作るならHTML::Parserつーのも便利。
use strict;
my $file = "hogehoge.html";
my $parser = MyParser->new;
$parser->parse_file($file);
package MyParser;
use base 'HTML::Parser';
sub start {
my ($self, $tag, $attr, $attrseq, $text) = @_;
if ($tag =~ /img/i) { $text =~ tr/\r\n//d; print "$text\n"; }
}
0227名無しさん@お腹いっぱい。
01/09/22 21:29ID:???おぉ、そんなものがありますか。感謝です。
ついでといってはなんですがディレクトリを扱うのに便利な
モジュールってありますでしょうか。
たとえばサブディレクトリを一度に削除できるようになるやつとか。
通常だと最下層から順番にやっていかなきゃいけないから。(´∈ ` )
0228名無しさん@お腹いっぱい。
01/09/22 21:43ID:???use File::Path;
rmtree($root, 0, 0);
0229名無しさん@お腹いっぱい。
01/09/23 00:45ID:SMJO237Aなるほど、File::Pathでしたか。
せんきゅですっ!
0231まなぶくん
01/09/23 01:13ID:???0232名無しさん@お腹いっぱい。
01/09/23 01:25ID:???色んなアプローチを示すのは良い事だと思うが。
0233_gunzip@眠い
01/09/23 01:47ID:???>>223-224さんの言う
>長いページになると止まってしまいます。
というのは、およそ二つの原因があるんじゃないかと。
例えば、下のスクリプトが何故"*"ではなく"**"と表示するのか...とか。
-------------------------------------------
#!/usr/local/bin/perl
our $string = "<<tag>tag>";
while($string =~ /<tag>/g){
$string =~ s/<tag>//;
print "*";
}
print "\n";
-------------------------------------------
0234_gunzip@ぼけ
01/09/23 01:51ID:???...って当たり前だな。眠いけどまとめてみます。
0235名無しさん@お腹いっぱい。
01/09/23 02:00ID:uXqIVwdQs/^img //i and push @imgs, /src="?([^"\s])"?/i while (<>);
とか。
0236腐ったソース大好き
01/09/23 02:02ID:uXqIVwdQwhile (<>) {/^img /i and push @imgs, /src="?([^"\s]+)"?/i }
か
0237まなぶくん
01/09/23 02:09ID:???この手のは何時も試行錯誤で結果オーライなんだよなー
_gunzipさんはエンジンのソース読んでるんだろな・・・
(´-`).。oO(あたまいたい。。。)
0238まなぶくん
01/09/23 02:10ID:???(´-`).。oO(ってまた糞レスだ。。)
0239名無しさん@お腹いっぱい。
01/09/23 02:24ID:???アパッチでperlを動かすには
どのような設定が必要なのでしょうか?
0240名無しさん@お腹いっぱい。
01/09/23 03:10ID:???そんな感じで追加質問が延々と続くパターンはたまらんよ
簡単に言うと
httpd.confってファイル弄ってexecCGIするんだ
検索すれ
0241名無しさん@お腹いっぱい。
01/09/23 03:35ID:???Apacheで[Perl]が動くって・・・。
別にPerlがインストールされていればApacheの有無に関係ないですけど。
CGIならスレ違いだかんね。
# ここんとこperlの質問で良い感じに流れてる気がする。
0242名無しさん@お腹いっぱい。
01/09/23 03:51ID:EZbM3lIs検索すればすぐに出てくるからおとなしくgoogleでも逝ってなさい
0243239
01/09/23 05:41ID:???httpd.confの
設定はどうすればいいか?
です。
でもここはperl言語についてのようなので、スレ違いのようですな。
0244名無しさん@お腹いっぱい。
01/09/23 06:18ID:???ありがとうございました。
httpd.confにExecCGIをつけて動きました。
ありがとうございました。m(_ _)m
0245名無しさん@お腹いっぱい。
01/09/23 11:43ID:IRukl05.動きません。間違ってはないと思うのですが・・・
unlink("*.*");
rmdir("*.*");
print"Content-type:text/html\n\n";
print<<EOF;
<html>
<head>
<title>デリート</title>
</head>
<body>
<BR><BR><BR><CENTER>
消しちゃいました〜(゚▽゚=)ノ彡☆ギャハハ!!
</CENTER>
</body>
</html>
EOF
exit;
上の方にもありますがWindowsME上のPerlではunlinkが使えないって
ことはないですよね?
それともunlinkとかrmdirに*って指定できないんですか?
とっても初心者な質問ですがお願いします。
0246245
01/09/23 12:19ID:IRukl05.HTML部分はありません。
0247名無しさん@お腹いっぱい。
01/09/23 12:46ID:???0248名無しさん@お腹いっぱい。
01/09/23 12:56ID:???0249名無しさん@お腹いっぱい。
01/09/23 13:11ID:???unlink(glob('*.*')); または unlink(<*.*>);
に修正しる。
0250_gunzip
01/09/23 14:34ID:???m//gは前回マッチした位置をmagicメンバ(これはリンクリストとして実装されている。)に記憶しておき、次回からはそのオフセットから検索を開始する。
マッチに失敗するか、文字列の内容に対する破壊的動作(代入その他)が行われた場合などは、オフセットを文字列の先頭に巻き戻す。
このことを知っていれば、
-------------------------------
our $string = "target string";
while($string =~ /target/g){
my @a = ( $string =~ /another/g );
}
-------------------------------
が無限ループになることがすぐに分かる。
例えば、>233のスクリプトで実際のところ何が起こっているかというと、
(下の[][]..[]はメモリ内のイメージ。('\0'は除く)offsetはSv-PVMGのIVスロットの値、
lengthはlenメンバ、matchはmagic.mg_lenメンバのこと。)
--------------------------------------------------------
| $string = "<<tag>tag>";
--------------------------------------------------------
$string = ['<']['<']['t']['a']['g']['>']['t']['a']['g']['>']
| offset = 0 #バッファ領域内の文字列開始オフセット
| length = 10 #文字列の実際の長さ
| match = -1 # $stringに対するマッチの開始オフセット
% メモリ確保のオーバーへッドを抑えるためにPerlは予め余分に
% バッファを確保するが、ここでは割愛する。
-------------------------------------------------------
-------------------------------------------------------
| while($string =~ /<tag>/g){ # 一回目のループ開始
-------------------------------------------------------
$string = ['<']['<']['t']['a']['g']['>']['t']['a']['g']['>']
| offset = 0
| length = 10
| match = 7 #次回のマッチ開始位置が更新される
% $string の2-6文字がマッチしてリターンする。
-------------------------------------------------------
0251_gunzip@今頃起きた
01/09/23 14:36ID:???-------------------------------------------------------
| $string =~ s/<tag>//;
-------------------------------------------------------
$string = ['<']['<']['t']['a']['g']['<']['t']['a']['g']['>']
| offset = 5 #更新される。上の6セル目に注目。
| length = 5 #当然短くなる。
| match = -1 #オフセットがリセットされる
% s///による置換。
% s///によって部分文字列が削除される際、Perlはマッチした個所の
% 文字列における位置を調べて、バッファを移動させる量が少ない方を採る。
% この場合、マッチしなかった先頭文字の'<'を5バイト後ろにずらし、
% バッファ先頭からの文字列開始オフセットを5に設定する。
% また、マッチの開始オフセットがリセット(-1)され、次のwhile()
% ループのマッチは、文字列の先頭位置から始めることになる。
-------------------------------------------------------
-------------------------------------------------------
| while($string =~ /<tag>/g){ #二回目のループ開始
-------------------------------------------------------
$string = ['<']['<']['t']['a']['g']['<']['t']['a']['g']['>']
| offset = 5
| length = 5
| match = 5 #次回オフセット(文字列終端)
% matchの値に従い、**文字列の先頭から**検索を開始し
% マッチは(始めの予想に反して)成功する。
------------------------------------------------------
0252_gunzip
01/09/23 14:38ID:???>>223さんの「非常に遅くなる」というのは、理由が二つ考えられるけど、
((( っていうか、なぜs///の部分が入っているのかなあ.....。
....もしかして、while($string =~ /pattern/g) だと、前回マッチした部分文字列が
残っているので、次回もその部分がマッチし無限ループになるのではないかと思ったのかな?
それで、s///でその部分を取り除いておかなくては、と考えたのだろうか?
もしそうなら、m//gはスカラコンテキストでは前回のマッチ位置を記憶しておいて
次回はそこから検索開始するので,while()内にいれても特に問題はないってことは
知っておいて欲しいな。 )))
>長いページになると止まってしまいます。
から思うに、(余計な)s///の副作用(*注)で毎回検索開始位置がリセット(上の例参照)
されるため、毎度文字列の初めからマッチを開始せねばならず、また、置換に伴う
バッファの移動も大量に行われるようになる。その結果、ファイルが大きくなるにつれて
莫大な時間がかかるようになる、というのが原因の一つ。
(*注) $stringへのs///, 左辺substr(),代入などの破壊的操作だけではなく、
単なるm//gパターンマッチだけでもwhile()内のm//g検索オフセットはクリアされる。
0253_gunzip@昼飯
01/09/23 14:51ID:???$strに対して、さらに何か手を加えている。#-->無限ループ
| pos($str) = 0 #オフセットを明示的にリセット
| substr($str,0,0) = "hoge"
| $str .= "text"
while()ループ内のs///に'g'修飾子が付いている。#->無限ループ
$str内に'\n', '\w', '\G' 等のキャラクタがあり、s///の所でなにか副作用でも起こしている。
#-->データ見ないことには判断できない。
けつろん
while($string =~ /PATTERN/g)ループの中での$stringの扱いには少し注意して欲しいなあ、
ということです。(単なる読み出しは全く問題なし)
っていうか、>>223の場合は6行めのs///を削除すればいいだけのような。
(結局言いたいことはこれだけ.....)
--------------------------------------------
ちなみに、自分はHTML::LinkExtorモジュールの利用を勧めておきますね。
#!/usr/bin/perl
use HTML::LinkExtor;
HTML::LinkExtor->new(\&ext)->parse_file('./index.html');
sub ext
{
my($tag, %attr) = @_;
if( lc($tag) eq 'img' ){
print $attr{src} , "\n";
}
}
0254_gunzip
01/09/23 14:57ID:???our $string = <<'END_OF_STRING';
<img src="/usr/local/pixmap/title.png">
<img
src="./cap.gif">
END_OF_STRING
while($string =~ /<img[^>]+?src\s*=\s*["']?([^'" >]+?)[ '"]?>/gis){
print $1, "\n";
}
0255名無しさん@お腹いっぱい。
01/09/23 17:20ID:???なるほどねぃ。
ためになる話をありがとう。
0256名無しさん@お腹いっぱい。
01/09/23 20:53ID:???0257名無しさん@お腹いっぱい。
01/09/23 21:48ID:???↑ですか?
0258名無しさん@お腹いっぱい。
01/09/23 22:14ID:???0259名無しさん@お腹いっぱい。
01/09/23 22:29ID:???実際_gnuzip JAPU両氏のお陰で厨房な俺は随分勉強になってるぞ
特に、コンパイラ読んでるらしい発言はメチャクチャ参考になるよ
Efectiveの脱線話読んでるみたいでとっても いい(・∀・)
0260223
01/09/24 01:22ID:39bTpAKQあ、 s///; っていらないんですか。
無限ループるかと思ってました。ありがとうございます。
HTML::LinkExtor調べてみます!
0261名無しさん@お腹いっぱい。
01/09/24 01:29ID:o1YS9rTQこのスレに主に住んでいるのでここで質問させて下さい。
作ったページを表示するとエンコードが西ヨーロッパに
なってしまいます。
<HTML lang="ja">
などと入れても問答無用です。
ちなみにブラウザはIEです。
何か良い方法はあるのでしょうか?よろしくお願いします。
0262名無しさん@お腹いっぱい。
01/09/24 01:31ID:???どこに住んでいようと関係ない。
然るべきスレに逝け。
このスレに引き篭もるな。
0263名無しさん@お腹いっぱい。
01/09/24 01:41ID:???いってきまふ・・・。
0264名無しさん@お腹いっぱい。
01/09/24 01:57ID:???0265名無しさん@お腹いっぱい。
01/09/24 02:22ID:???それにしてもこの板人すくなぁ〜…。
0266名無しさん@お腹いっぱい。
01/09/24 02:34ID:???実際の所HTMLだけで文字コード100%指定するのって不可能なんだよね
charsetの手前でブラウザがコード決め撃ちしちゃったらそれまでだったりして・・
昔はS_JISならheadより手前に<!---あ--->なんておまじないも有ったけど
CGIだったらHTTPヘッダでContent-type指定してやればマシになるのかなぁ
漏れは中国語サイトを良く見るんでaccept-languageをch-1.0とかしてるのが
悪影響と思ってるけど。。。
激しくすれ違いだからSAGE
0267名無しさん@お腹いっぱい。
01/09/24 02:43ID:???Content-Type: text/html; charset=Shift_JIS
等。
スレ違いだが、まぁ。
0268名無しさん@お腹いっぱい。
01/09/24 02:51ID:???gooのホームページはそうだよね。
でもすれちがいなので下げ。
0269名無しさん@お腹いっぱい。
01/09/24 02:59ID:08MV7o4sトップのスレを下げてもしょうがないのであげ。
もちろん文書中でそれより前に漢字とか使っちゃダメだけど.
ttp://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/charset.html#doc-char-set
関係ないのでやっぱりさげ.
0271名無しさん@お腹いっぱい。
01/09/24 04:03ID:???charsetパラメタの勧め: HTMLにおける文字符号化スキームの明示方法
http://www.fxis.co.jp/DMS/sgml/cafe/saloon/html_correct_charset.html
0272もち米100%
01/09/24 06:54ID:???編集前の状態
ファイルA=>0
ファイルB=>0
編集後の状態
ファイルA=>1
ファイルB=>1
こんな感じの処理をする時にファイルBの編集中に例外やSIGTERM喰らって
処理が中断してしまった時ファイルAを0に巻き戻すような処理を行いたいのです。
つまりファイルAとBの時系列の同一性を保ちたいんですが(これって何って呼ぶん
だったかな、、んー)
イメージ的には2chだと、パラメータの汚染チェックが通れば次々ファイルを処理
して行く訳ですが、最終段階のindex.htmの書き換え中にコケてしまうような状態です
例えばショッピングカート等、お金の絡むプログラムだと、これが致命的な欠陥に
なると思うんですが、、中々自分では上手く行きません。
参考になる考え方や本なんかは有りますでしょうか。
0273もち米100%
01/09/24 07:18ID:???2chだと あるスレにカキコがあると
datに追記→subject.txt書き換え→テンポラリHTML書き換え→index書き換え
これだけ作業する訳ですが、どれかの更新中にこけてしまうと
それぞれのファイルは不整合をおこしてしまいます。
これを、全ての工程が成功して初めて書き換える、と言う感じで行いたいのです。
今の所テンポラリに書き出して一気にrenameする位しか考えが及びません。
0274名無しさん@お腹いっぱい。
01/09/24 07:59ID:???0275名無しさん@お腹いっぱい。
01/09/24 10:37ID:EJKgIokwアンケートをとるCGIでenquete.datに書き込んでくれません
line11は $data = "$form{'name'}$form{'mail'}\n----------\n\n";
line16は print ENQ $date;
なのですが
これってどういう意味なんでしょうか?
C:\1week\saturday>perl -cw enquete.pl
Name "main::data" used only once: possible typo at enquete.pl line 11.
Name "main::date" used only once: possible typo at enquete.pl line 16.
enquete.pl syntax OK
0276名無しさん@お腹いっぱい。
01/09/24 11:05ID:???mainパッケージの$dataが一回しか使われてないけど、タイポしてんじゃ無いの?
my ($data,$date);
0277名無しさん@お腹いっぱい。
01/09/24 11:41ID:RCKEta/Aすいませんタイポってなんですか?
0278名無しさん@お腹いっぱい。
01/09/24 12:01ID:???typo == "typographical error"
ようするに文字の打ち間違い。
0279名無しさん@お腹いっぱい。
01/09/24 12:12ID:???Temporary -> Rename
ってのが簡単に実装出来る手段だというのは間違い無い。
参考になる本は、ム板の参考書スレにあった気がするぞ。
0280名無しさん@お腹いっぱい。
01/09/24 12:16ID:W/gfguRs>テンポラリに書き出して一気にrenameする
これで良いんじゃない・・・?
最後に一連のrenameするときだけシグナルをトラップして
中断されないように配慮すれば。
0281名無しさん@お腹いっぱい。
01/09/24 12:50ID:mlN0ge2Eご指摘のとうりただの打ち間違いでした
( ´Д⊂ヽううー、ありがとうございました
またヨロシクお願いします
0282名無しさん@お腹いっぱい。
01/09/24 12:51ID:???セルへのデータ入力の一括入力は、以下のような方法で可能なのですが、
@data = (
[ qw(dataA1, dataB1, dataC1) ],
[ qw(dataA2, dataB2, dataC2) ],
[ qw(dataA3, dataB3, dataC3) ]
);
$Worksheet->Range("A1:C3")->{Value} = \@data;
セルに入力されているデータをURLの一部として持つHyperlinkを
同様にセルに一括挿入する方法が分かりません。
現状、A1:A3のデータを元にHyperlinkを挿入する際、
for (my $i = 1; $i <= 3; $i++) {
$Worksheet->Hyperlinks()->Add(
$Worksheet->Range("A${i}"),
"http://www.z.com/" . $data[$i - 1]->[0] . "/");
}
のようにループを回して処理しているのですが、
データ数が多くなると分単位で時間がかかってしまう点が難点です。
Hyperlinkが定数であれば、下記の一括挿入が可能なのですが、
URLの一部にセルのデータを使用した場合のHyperlinkの
効率的な挿入方法はないものでしょうか?
$Worksheet->Hyperlinks()->Add(
$Worksheet->Range("A1:A3"), "http://www._.com/sample/");
VBA寄りの内容かもしれませんが、ご存知の方がありましたら、
ご助言頂ければ幸いです。
0283名無しさん@お腹いっぱい。
01/09/24 12:52ID:???セルへのデータ入力の一括入力は、以下のような方法で可能なのですが、
@data = (
[ qw(dataA1, dataB1, dataC1) ],
[ qw(dataA2, dataB2, dataC2) ],
[ qw(dataA3, dataB3, dataC3) ]
);
$Worksheet->Range("A1:C3")->{Value} = \@data;
セルに入力されているデータをURLの一部として持つHyperlinkを
同様にセルに一括挿入する方法が分かりません。
現状、A1:A3のデータを元にHyperlinkを挿入する際、
for (my $i = 1; $i <= 3; $i++) {
$Worksheet->Hyperlinks()->Add(
$Worksheet->Range("A${i}"),
"http://www._.com/" . $data[$i - 1]->[0] . "/");
}
のようにループを回して処理しているのですが、
データ数が多くなると分単位で時間がかかってしまう点が難点です。
Hyperlinkが定数であれば、下記の一括挿入が可能なのですが、
URLの一部にセルのデータを使用した場合のHyperlinkの
効率的な挿入方法はないものでしょうか?
$Worksheet->Hyperlinks()->Add(
$Worksheet->Range("A1:A3"), "http://www._.com/sample/");
VBA寄りの内容かもしれませんが、ご存知の方がありましたら、
ご助言頂ければ幸いです。
0284名無しさん@お腹いっぱい。
01/09/24 12:56ID:???(誤)
@data = (
[ qw(dataA1, dataB1, dataC1) ],
[ qw(dataA2, dataB2, dataC2) ],
[ qw(dataA3, dataB3, dataC3) ]
);
(正)
@data = (
[ qw(dataA1 dataB1 dataC1) ],
[ qw(dataA2 dataB2 dataC2) ],
[ qw(dataA3 dataB3 dataC3) ]
);
よろしくお願いします。
0285名無しさん@お腹いっぱい。
01/09/24 13:16ID:4RAmdUnsURLの配列を作ってから一括代入するのはどうすか?
@cells = map { [ map { 'http://www.xxx.com/' . $_ } @$_ ] } @data;
$Worksheet->Range("A1:C3")->{Value} = \@cells;
0286名無しさん@お腹いっぱい。
01/09/24 13:56ID:???~~~~~~~
笑える。
0287名無しさん@お腹いっぱい。
01/09/24 13:57ID:???~~~~~~
0288名無しさん@お腹いっぱい。
01/09/24 14:50ID:???レスありがとうございます。
舌足らずで、説明不足だったようです。どうもすみません。
実現したい内容は、セル自身はURLそのものではなくリンクの一部を表し、
それを使ったリンクを同じセルに埋め込みたいということです。
例えば、URLの一部になるセルのデータとしてISBNや2chのスレIDなどが入っており、
その隣に書名なりスレ名なりが入力されているような状況を想像下さい。
そして、該当リンクへジャンプするとAmazonや2chに実際に飛んで、
具体的な情報が見れるような使い方を考えています。
実際に考えている使用方法では、セル自身のデータがCGIのquery情報を保持しており、
それ自身が意味を持った値ですので、
セルの値にHyperlinkを直接もつというのは避けたいところです。
引き続き、情報お待ちしております。
0289名無しさん@お腹いっぱい。
01/09/24 15:54ID:GhpSecZ2<form method="post" action="enquete.cgi">
"送る"を選ぶとなぜか
"次の場所からダウンロードするように選択しました"
となってcgiのテキストを開こうとします
本のCDからデータをコピーしたので打ち間違えではないのですが、、、
何が悪いのでしょうか?
0290名無しさん
01/09/24 15:56ID:1qyod3pU0291名無しさん@お腹いっぱい。
01/09/24 15:58ID:???または、IEの場合、*.cgiのファイルをテキストエディタ等に関連付けしてある状態で、
Content-Type: text/plainのCGIにアクセスすると、ダイアログが出るという状況が確認されています。
0292名無しさん@お腹いっぱい。
01/09/24 15:58ID:???ヘッダの情報が間違ってるとか。
0293名無しさん@お腹いっぱい。
01/09/24 16:13ID:GhpSecZ2>>290
ローカルなのですがApache/htdocsに入れました
>>291
*.cgiはメモ帳のアイコンになってますこれがまずいのでしょうか?
>>292
ヘッダってどこのことですか?
0294名無しさん@お腹いっぱい。
01/09/24 16:27ID:???> *.cgiはメモ帳のアイコン
ですね。関連付けを外したら直るかと。
ヘッダとは、Content-Type: text/plain とかのこと。
0295名無しさん@お腹いっぱい。
01/09/24 16:53ID:bJzfeBUIありがとうございます
それでどうやって関連付けを外すのですか?
申し訳無い
Content-Type: text/htmlというのならcgiデータに書いてあります
0296名無しさん@お腹いっぱい。
01/09/24 17:17ID:???どうしましょ。
関連付けはwin板ですかね。
0297名無しさん@お腹いっぱい。
01/09/24 17:43ID:???Wクリックでメモ帳で編集出来るようになってるだけだから。。。
0298名無しさん@お腹いっぱい。
01/09/24 17:44ID:AOw736z6暗号化のやり方がわからない・・・
0299名無しさん@お腹いっぱい。
01/09/24 17:53ID:???それ良く聞くけど、関連付けは関係無いと思うぞ。
インターネットの(外の)サーバのCGIではそんな風にならないんだろ?
だったら99%httpdの設定だって、WINは知らないけどApacheのconfファイル
見てみ。
>>298
$cryptpass = crypt ($plainpass,salt);
で$cryptpassをURLエスケープする
0300-
01/09/24 17:57ID:qSV25GfUhttp://members.tripod.co.jp/bingo852/
0301名無しさん@お腹いっぱい。
01/09/24 18:01ID:???text/htmlなら何ら関係ないけど。
>>300
よく飽きないね。いい加減ウザイ。
0302名無しさん@お腹いっぱい。
01/09/24 18:06ID:???そっか・・漏れデバッグの時plainで吐いてるけどなった事無かったから ゴメソ
じゃtext/html出してる前提で
httpd.confを触ってみて、多分Option辺りだと思うから。。
0303295
01/09/24 18:10ID:bJzfeBUIフォルダオプション-ファイルタイプで削除して
*.cgiがwinのアイコンになったのですが
"送る"を押すとブラウザにcgiデータのテキストが出てきてしまいます
>>299
httpd.confというのは本に書いてあるように設定したのですが、、、
0304名無しさん@お腹いっぱい。
01/09/24 18:20ID:???とりあえず、そのCGIは具体的に何するんですかね?
掲示板のようなCGIだと仮定してみる。
普通にtext/htmlを返すのが問題無いとして、
余程変にいじってないApacheならば問題ないはずだが。
0305295
01/09/24 18:22ID:bJzfeBUIServerName 127.0.0.1・・・Servername new host.name下に書き足し
Options FollowSymLinks ExecCGI・・・ExecCGIを書き足し
Options Indexes FollowSymLinks ExecCGI・・・MultiViewsをExecCGI
AddHandler cgi-script .cgi・・・#を削除
perl、cgiのみだと動くのですが、
html、shtmlに組み込むとまったく動きません
0306295
01/09/24 18:26ID:bJzfeBUIhtmlのformを使って書き込まれた内容を
cgiを使ってdatファイルに書き込むというモノなのですが、、、
■ このスレッドは過去ログ倉庫に格納されています