Perl コーディング初心者質問コーナー Part35
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/05/26 16:48ID:kkhhiYmo【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0016nobodyさん
04/05/27 12:27ID:???素直にno warnings使うのがいいと思うがな。そのためのもんだし。
不安ならブロックの中に閉じ込めてno warnings "qw"とかすれば
他の警告への影響も最低限になるだろう。
あるいは
@a = split(/\s+/, <<QW);
foo baa
foo#bar abc
xyz
QW
とかする手もなくはないがそこまでする?
0017nobodyさん
04/05/27 13:25ID:???5.005 辺りまではそういう風に実装されてたよ。
#--- test.p ---
my @array = qw(a b c d e);
__END__
> perl5.005 -MO:Deparse test.p
my(@array) = split(/\s+/, 'a b c d e', 0);
> perl5.8.3 -MO:Deparse test.p
my(@array) = ('a', 'b', 'c', 'd', 'e');
0019nobodyさん
04/05/27 20:42ID:1K93G7MZNet::Telnetを使ってroot権限で作業をしたいのですが
suでのログインがうまくいきません。
timed-outになるので恐らくパスワード待ちの状態でタイムアウトしてると
思うのですが正しいコマンドを知っている方いましたら教えてもらえないでしょうか?
my $host = 'host';
my $user = 'user';
my $pass = 'pass';
my $prompt = '/\[.+\]/';
my $supass = 'supass';
my $telnet = new Net::Telnet(
Timeout => 10,Prompt => $prompt,);
$telnet->open($host);
$telnet->login($user, $pass);
$telnet->cmd("su");
$telnet->waitfor(/Password: /);
$telnet->cmd("$supass");
0020nobodyさん
04/05/27 20:46ID:1K93G7MZNet::Telnetを使ってroot権限で作業をしたいのですが
suでのログインがうまくいきません。
timed-outになるので恐らくパスワード待ちの状態でタイムアウトしてると
思うのですが正しいコマンドを知っている方いましたら教えてもらえないでしょうか?
my $host = 'host';
my $user = 'user';
my $pass = 'pass';
my $prompt = '/\[.+\]/';
my $supass = 'supass';
my $telnet = new Net::Telnet(
Timeout => 10,Prompt => $prompt,);
$telnet->open($host);
$telnet->login($user, $pass);
$telnet->cmd("su");
$telnet->waitfor(/Password: /);
$telnet->cmd("$supass");
0021nobodyさん
04/05/27 20:46ID:1K93G7MZNet::Telnetを使ってroot権限で作業をしたいのですが
suでのログインがうまくいきません。
timed-outになるので恐らくパスワード待ちの状態でタイムアウトしてると
思うのですが正しいコマンドを知っている方いましたら教えてもらえないでしょうか?
my $host = 'host';
my $user = 'user';
my $pass = 'pass';
my $prompt = '/\[.+\]/';
my $supass = 'supass';
my $telnet = new Net::Telnet(
Timeout => 10,Prompt => $prompt,);
$telnet->open($host);
$telnet->login($user, $pass);
$telnet->cmd("su");
$telnet->waitfor(/Password: /);
$telnet->cmd("$supass");
002219-21
04/05/28 01:38ID:???書き込んだらサーバーエラーになってCtrl+F5押しても
書き込まれてなかったのでうっかり・・・
本当に申し訳ないです。
できれば解答をお願いしたいです
0023nobodyさん
04/05/28 01:48ID:???- $telnet->waitfor(/Password: /);
+ $telnet->waitfor('/Password: /');
0024nobodyさん
04/05/28 03:46ID:???cmdはプロンプトを待つ。
デバッグするならDump_Logぐらい取れよ。
0025nobodyさん
04/05/28 15:08ID:NnBdFpi6アッハンという2ちゃん型掲示板を使っているのですが
トリップ設定部分でパスワードを○○と入力→コテが表示
と言う機能を使う際、コテ名を漢字にするとスクリプトエラーに
なってしまいます。
\マークを入れても同様です、どうすればよいでしょうか?
0026nobodyさん
04/05/28 16:02ID:???配布元にサポートBBSがあるじゃないか。
002725
04/05/28 23:44ID:NnBdFpi60028nobodyさん
04/05/29 14:19ID:eHv0ssyS1.あるサイトを運営しているのですが、顧客管理のcgi(画面)で、顧客をある条件(性別や年齢)
等で抽出し、そのヒットした顧客を画面に表示し、さらに、チェックボックスでチェックされた
顧客に対してのみsendmail にてお知らせメールを送る機能を追加しようとしています。
2.それで、抽出した顧客の一覧(チェックボックス付き)の画面出力まではできたのですが、
sendmailプログラムにチェックボックスにチェックされたユーザの一覧データがうまく送信されません。
3.エラーはでないのですが、チェックされた顧客が10人あっても一人分しかメール送信されません。
具体的に言いますと
form method=post action=cgi
input type=checkbox name=mail_to value=a
input type=checkbox name=mail_to value=b
/form
で、タイプをチェックボックスとして、cgiに渡します。
この場合、cgiで受け取るデータはどの様な形式で入ってくるのでしょうか?
name が同一の名前なので、 配列 $mail_to[0] $mail_to[1]
かと思ったのですが、違うようですし、 データの内容がカンマで区切られて入ってくるでもないようですし・・
尾永井します
0030nobodyさん
04/05/29 14:30ID:???0031nobodyさん
04/05/29 14:33ID:???標準入力を変数に変換している部分による。
同一の名称のフォームオブジェクトのデータを受け取りたいならその部分を修正しなければならない。
その部分のコードが読めるならなぜ一つしか受け取れないかもわかるはず。
なお、Perlで受け取る時点では「mail_to=a&mail_to=b」などの形で入っている。
ちなみに、こういう場合は同一名称のチェックボックスにならないように工夫する方が一般的。
003228
04/05/29 14:35ID:eHv0ssySさすが、プロ詳しいですね。
今日は、眠れそうです。サンクスコ
0033nobodyさん
04/05/29 15:00ID:???標準(?)のCGI.pmならparamをリストコンテキストで呼べば
複数の値を受け取れたと思う。
@mail_to = $cgi->param('mail_to');
0034nobodyさん
04/05/29 16:40ID:???003528
04/05/29 17:17ID:eHv0ssyS検索したら、そおゆうのがありました。
サンクス
0037nobodyさん
04/05/29 19:01ID:UPbtVCfiwhile (<IN>) {
# 各行をカンマ区切りで分割
@body = split(/,/, $_);
@data = split(/:/, @body);
ファイルを開いて、カンマで区切った後、それをさらに:で区切ろうと思ったのですがうまくいきません。
どうしたらいいですか?
0038nobodyさん
04/05/29 19:18ID:???http://flex.ee.uec.ac.jp/texi/perl/perl_56.html
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlre.html
my @data = split /[,:]/;
0039nobodyさん
04/05/29 19:37ID:UPbtVCfiありがとうございます。
そんな技があったとですね
0042nobodyさん
04/05/29 20:23ID:???少なくとも俺は使わない。
今までは使っているソースを見たこともない。
0043nobodyさん
04/05/29 20:28ID:???0044nobodyさん
04/05/29 20:36ID:???0045nobodyさん
04/05/29 21:07ID:???if ($pass eq aa ) { $name = "ああ";}
if ($pass eq bb ) { $name = "いい";}
if ($pass eq cc ) { $name = "うう";}
if ($pass eq dd ) { $name = "ええ";}
・
・
みたいなのがずっと続くんですが。。
0046nobodyさん
04/05/29 21:23ID:???$name = $name_list->{$pass};
0047nobodyさん
04/05/29 22:12ID:???http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsyn.html#Basic_BLOCKs_and_Switch_Statemen
0050nobodyさん
04/05/29 23:04ID:???初心者はこうして一つ一つ知識を蓄えていくんだから生暖かく見守ろうぜ
0051nobodyさん
04/05/29 23:05ID:???普通の基準は俺。
少なくとも俺は使い方が分からないから使えない。
今まで他人のソースを見たこともない。
0052nobodyさん
04/05/29 23:07ID:???0053nobodyさん
04/05/29 23:13ID:7xFl3dBXそれしかなかった場合に変数$homeに「URL」を、
http://の後ろに入力されてた場合$homeにアンカー付きの「<a>URL</a>」を入れたいと思ってます。
【書いたソース】
if ($in{'url'} == "http://") { $home = "URL"; }
else { $home = "<a href=\"$in{'url'}\" target=\"_blank\">URL</a>";}
こうすると、http://の後に入力していてもアンカー無しの「URL」が表示されてしまいます。
間違いをご指摘ください おねがいします!
0055nobodyさん
04/05/29 23:21ID:???http://www5a.biglobe.ne.jp/~n_rieko/perl/5.htm#5-4
0056nobodyさん
04/05/29 23:34ID:???_| ̄|● お恥ずかしい
if ($in{'url'} eq "http://")
で解決しました。
ありがとうございました!
0059nobodyさん
04/05/30 00:19ID:???必要ないからっていうのは無しね。
使うことによって、楽になる場面はいっぱいあるんだし。
0060nobodyさん
04/05/30 00:22ID:???htmlもろくに出来ないのにプログラミングですか。
それはそれで凄いですね。
0061nobodyさん
04/05/30 00:34ID:???気づいて顔真っ赤にしてるんでしょ。
0062nobodyさん
04/05/30 00:54ID:gNGGvGZXカウンタのような役目をしている変数$winというのがあるんですが
この$winが100の倍数ごとにある処理をしています。
そこで$win_nextという変数で次の100までの回数を表示したいのです。
例えば$weが48だと$we_nextが52となったり、281だったら19になったり、といった風な感じです。
いろいろやってみましたが何回やってもできません。
↓例えばこういう風なのとか・・・
$win_next=($win+100-($win-($win/100*100)))-$win;
0065nobodyさん
04/05/30 01:15ID:???少なくともその一つだけ俺だから違う。
0066nobodyさん
04/05/30 01:24ID:???それはそれで兵共が集うスレですね。
0068nobodyさん
04/05/30 01:50ID:???そうか、どいつなのかはわからんが。
個人的趣味で異なる名前を付けるならそういうコーディングスタイルなのだろう。
でも避けるべきとか普通は使わないとか見たことないとかは明らかに
無知あるいは応用が利かないとしか言えないな。
もうちょっといろいろ勉強したほうがいいね。
0071nobodyさん
04/05/30 02:04ID:???それとも粘着の意味を取り違えてるの?
0072nobodyさん
04/05/30 02:08ID:???痛すぎる
自分が粘着してることに気づいてない粘着は一番嫌われるよ。
まぁ、リアルでそうなんだろうが
0075nobodyさん
04/05/30 02:12ID:???0076nobodyさん
04/05/30 02:13ID:???まぁ餅付け
いや、お前が一番痛いよ・・・
メル欄引っ掛けとかキモ杉
0077nobodyさん
04/05/30 02:14ID:???>>75は誰か引っかかると思って書いてるんだよ
メル欄晒しはもう少し待ってやるべきだった。
今>>75ないてるぞ・・・
俺知らない
0079nobodyさん
04/05/30 02:15ID:???perlを勉強中です。
CGI呼出し時にurlの引数に配列を直接入れる事は可能でしょうか?
PHPでは出来ると聞いて、perlでやってみてるのですが上手くいきません。
具体的には、以下の様にしました。
hoge.cgi?huga%5B%5D=1&huga%5B%5D=2&huga%5B%5D=3
また、この方法が無理な場合は、$huga=1,2,3で代入して送って
受け取ったCGIで@huga=(1,2,3)で代入したいのですが、urlの
; / ? : @ & = + $ ,
以上は特別な意味を持つようなのですが、
, を %2Cにエンコードして送信すれば問題有りませんでしょうか?
おまえらにタイムリーな話題ですよ
http://pc5.2ch.net/test/read.cgi/php/1078568723/l50
0080nobodyさん
04/05/30 02:16ID:???0084nobodyさん
04/05/30 02:23ID:???典型的な厨房だな。
宿題して寝ろよ
0085nobodyさん
04/05/30 02:25ID:???checkboxを学べ
それは板違いだ
お前ら板違いの話題で良くここまで盛り上がれるな。
0088nobodyさん
04/05/30 02:29ID:???0089nobodyさん
04/05/30 02:37ID:???w=必死
009362
04/05/30 03:14ID:???愚問スマソ
0094nobodyさん
04/05/30 04:31ID:???perlからサイズ取得スクリプト(PHP)を実行して帰って来た結果をperl側で取得することは不可能でしょうか?
教えて下さい。お願いします。
0095nobodyさん
04/05/30 04:36ID:???はい、終わり。
後はグーぐるでね
0096nobodyさん
04/05/30 11:27ID:???/ /⌒)ノ ペタン
∧_∧ \ (( ∧_∧
(; ´Д`))' ))(・∀・ ;) < 餅つけ
/ ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O ノ ) ̄ ̄ ̄()__ )
)_)_) (;;;;;;;;;;;;;;;;;;;)(_(
0097nobodyさん
04/05/30 17:22ID:???こんなモジュールを見つけたよ。
http://search.cpan.org/~ysas/SWF-File-0.33/lib/SWF/Parser.pm
&headersubコールバックを定義しておけば、perlだけで情報が取れそう。
0099nobodyさん
04/05/30 20:27ID:???どのように書き直せばいいのでしょう?
$i1,$i2 = split("_",$name);
$name = $i1$i2;
0102nobodyさん
04/05/30 20:49ID:???スレの趣旨には合っているがあまりに酷すぎる。>>100の言うとおりに教科書買え。
($i1,$i2) = split("_",$name);
0104nobodyさん
04/05/30 21:50ID:???エラーログをよく見ろ。
010599
04/05/30 22:07ID:???(Missing operator before $i2?)
syntax error at ../bbs/bbs.cgi line 651, near "$i1$i2"
../bbs/bbs.cgi had compilation errors.
なんですが。
0107nobodyさん
04/05/30 22:47ID:Mg+ccEmx0108nobodyさん
04/05/30 22:53ID:???0109nobodyさん
04/05/31 00:25ID:???0110nobodyさん
04/05/31 01:09ID:???0111nobodyさん
04/05/31 06:12ID:???0112nobodyさん
04/05/31 22:39ID:1T44mYBtlist.txtの、一番上の行にテキストを追加したいのですが
open(OUT, ">> list.txt");
@list = <OUT>;
unshift (@list,"追加の行<br>\n");
print(OUT "@list");
close(OUT);
このようにやると、一番下の行に追加されます。
どこが間違ってるのでしょうか?
0113nobodyさん
04/05/31 22:45ID:???0114nobodyさん
04/05/31 22:45ID:???0115nobodyさん
04/05/31 22:52ID:???■ このスレッドは過去ログ倉庫に格納されています