Perlコーディング初心者質問スレ Part 47
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/03/01(水) 15:39:31ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0175nobodyさん
2006/03/11(土) 17:14:12ID:???酷すぎる
0176nobodyさん
2006/03/11(土) 18:40:51ID:???となっている文字列を
AB,CD,EF,GH
という風に二文字ずつでリストに展開するにはどうすればよいですか?
元の文字列は必ず偶数個です。
0177nobodyさん
2006/03/11(土) 18:53:04ID:???print join( ' | ' , split( /(..)/, $str ) );
とかしてみたんですが、結果が
| AB | | CD | | EF
となって変な感じです。
AB | CD | EF
となってほしいのですがうまくいきません。
0178nobodyさん
2006/03/11(土) 18:54:15ID:???my $str = 'ABCDEFGH';
print join(',', $str =~ /../g), "\n";
print join(',', unpack '(A2)*', $str), "\n";
0179nobodyさん
2006/03/11(土) 19:00:40ID:???unpackでできました。
(A2)*なんてできたとは知りませんでした。
どうもありがとうございます。
0180172
2006/03/11(土) 19:22:03ID:???本当なんもわからないのですみませんです・・
見よう見まねで他のファイルと比べてみて適当にいじってしまいました。
少しネットで調べてみたのですが、初歩的なことがわかっていないため何がなになのかわからない状態です・・
>>173さん
sjisを使ってます。一例にあげてくださった文字や、文字列中にはlは使ってません
調べてみても良くわからなかったのですが、
文字化けする文字の後ろに「\」をつけたり「'」で文字列を挟んで対処するような?ことが載っていて
「'」で文字列を挟むことは試してみましたが駄目でした
あんま適当にいじっても良くないかな?試してません・・
レスを参考に少し勉強してみます・・
レスありがとうございましたm(_ _)m
0181nobodyさん
2006/03/11(土) 20:02:53ID:???0183nobodyさん
2006/03/12(日) 01:25:09ID:???MVC な cgi 以外配布禁止にしたらどうだろう。
0184nobodyさん
2006/03/12(日) 02:24:37ID:???0185nobodyさん
2006/03/12(日) 03:08:46ID:???0187172
2006/03/12(日) 09:02:35ID:???昨日見た専門のサイトは、難しいことばかりで
何がなんだかさっぱりでした
皆様の助言は初心者の私でもわかりやすく
検索しやすくとても参考になります。
本当、ありがとうございました
0188nobodyさん
2006/03/12(日) 10:16:50ID:???どこですか?
0189nobodyさん
2006/03/12(日) 22:15:07ID:???で「ー」と「−」を引っ掛けようと思っていたのですが、
なぜだか「−」のみ引っかかりません。
すみませんがご教示いただけますと幸いです。
0192nobodyさん
2006/03/12(日) 23:01:28ID:???「ー」\x81\x5B
「−」\x81\x7C
\x7Cは「|」
あとは調べられるよな
0194189
2006/03/12(日) 23:41:40ID:???文字コードはEUCです。
ttp://72.14.203.104/search?q=cache:rjjAEg1ykyIJ:www.susono.com/~sohei/memo/memo/perl_euc.html+&hl=ja&gl=jp&ct=clnk&cd=1&lr=lang_ja
ここを参考に書いていたのですが、引っかからなかったので
質問させていただきました。
皆さんご教示有難うございます。
これから色々試してみて報告させていただきます。
一つお聞きしたいことがあるのですが、例えば今回のように
「−」と入力して「\x**」というように変換してくれるようなサイト等
があればご教示いただきたい次第です。
度重なる質問ですみません。
0195190
2006/03/12(日) 23:50:59ID:???なんかそのサイトの記述が違ってるような。
'(?:\xA1[\xBC\xBD\xC1])' → ー―〜
'(?:\xA1[\xBC\xDD\xC1])' → ー−〜
だと思われ。
(真ん中の文字が微妙に違う)
> 「−」と入力して「\x**」というように変換してくれるようなサイト等
俺は UNIX で hd コマンドを使ってるけど、 Windows とかサイトはわかんない。すまん。
0196nobodyさん
2006/03/12(日) 23:51:39ID:???この程度のことを自分でやろうと思わないのなら、Perl のみならず、
あらゆるプログラム言語から手を引くべきだろうね。
また、仕事でやらされている状況なら、コンビニの店員のバイト、
もしくは、地面掘りの仕事に転職するべきかと。
0197nobodyさん
2006/03/13(月) 00:02:18ID:???print unpack "H*", "−";
と書いたファイルをeucで保存して実行するだけ。
俺は文字コード表使ってるが。
>>196
初心者スレに居ると身体に悪いぞ。
0199nobodyさん
2006/03/13(月) 01:42:55ID:???非常に参考になるアドバイス、誠に有難うございました。
後述しますが、おかげさまで変換プログラムで確認できる
ようになりました。
この場をお借りし御礼申し上げます。
文字コード表は後で探してみたいと思います。
>>196
おっしゃるとおりです。
返す言葉がございません。
反省点を踏まえ、プログラムを自分で作成してみました。
皆様の一つ一つのアドバイスを無駄にせぬよう、
自分でもできることをやってみました。
皆様には全く不必要のものかとは思いますが、今後私と
同じような問題を抱えた方がこのスレッドを見たときに少し
でも役に立てるよう、即席ではございますが変換プログラム
を作ってみました。晒しておきます。
ttp://whatever.say.jp/char_unpack.cgi
0200nobodyさん
2006/03/13(月) 02:39:54ID:???http://b.hatena.ne.jp/entrylist?url=http://whatever.say.jp%2F
http://b.hatena.ne.jp/entrylist?url=http%3A%2F%2Fwhatever.say.jp%2F&sort=eid
なんか興味深いね。
0202nobodyさん
2006/03/13(月) 09:08:48ID:???って閉鎖されてるようだけど何のHP?
0203nobodyさん
2006/03/13(月) 09:48:40ID:???http://b.hatena.ne.jp/entry/http://whatever.say.jp/program.html
http://b.hatena.ne.jp/entry/http://whatever.say.jp/program/snap_shot/
http://whatever.say.jp/weblog/
0204nobodyさん
2006/03/13(月) 11:11:11ID:???0205149
2006/03/14(火) 11:00:15ID:K408BhkZ前回どこよりもすばやく的確な解答を得ることができたので、またまた頼らせていただきます。
前回は「日付からスラッシュを抜きそれでソートする方法」等を教えていただいたのですが、それを別の場所でも利用しようと考えました。
データの自動非表示とでも言えばいいのかな?指定日になったら自動で一部データを非表示にするという物です。
考えとしては以下のような感じです。
1.表示非表示はチェックボックスで行う。チェックが入っていればその情報を表示という感じで。
もちろん、その変数は空白か1が入り、1ならcheckedとする。
2.CGIに良くありがちな日付取得より年月日を取得する。
3.掲載期限とシステム日付を比較し、「システム日付≧掲載期限」であれば表示チェックを空白にする
4.勝手に消えてくれてウマー
こんな感じです。
イベント情報掲載とか新譜発売情報なんかにも応用が利くんじゃないかと。
で、ない頭をフルに使って以下のようにやってみました。もちろんですが、元となるCGIや他のCGIから切り張りしたものです(;´∀`)
保存してある変数は、不必要だと思うものは消しちゃったので、上下でずれがあるかもしれませんが、脳内変換お願いします。
・・・
で、下にソース貼り付けたら文字数オーバーしたので、とりあえずここまで。
0206149
2006/03/14(火) 11:00:39ID:K408BhkZ----------------
sub check{
$cview2 = "";
&get_time;
open(IN,"$logfile") || &error("Open Error : $logfile");
@lines = <IN>;
close(IN);
foreach $lines (@lines) {
($no,$year1,$month1,$day1,$name,$sub,$com,$cview,$climit〜〜) = split(/<>/,$lines);
chomp;
#日付チェック手順1 : 日付を変換
if($climit){
$climit2 = sprintf('%04d%02d%02d', split('/', $climit)) ;
#日付チェック手順2 : 日付を比較
if ($sysdate2 >= $climit2) {
$_ = "$no<>$year1<>$month1<>$day1<>$name<>$sub<>$com<>$cview2<>$climit<>〜〜\n";
print OUT $_;
}#if閉じ
}#if閉じ
}#foreach閉じ
close(OUT);
}
----------------
しかし、変化無しです。「$cview」は1のままです。
ルーチンの実行はライブラリ読み込みの次ぐらいに行っているので、CGI実行で必ず動作するはずなのですが…
どこが間違っているのでしょうか?採点お願いします。
0207nobodyさん
2006/03/14(火) 11:39:47ID:???を
int($sysdate2) >= int($climit2)
にしたらどうなる?
0208149
2006/03/14(火) 11:48:44ID:K408BhkZ>int($sysdate2) >= int($climit2)
うーん。変化無しです。
というか、変化しているかどうかがまったくわかんないですよね。
どうにかして変数などがちゃんと反映されているかって確認できないですかね?
0209nobodyさん
2006/03/14(火) 11:50:57ID:???仕事かよ。
0210nobodyさん
2006/03/14(火) 11:52:11ID:???採点を求めているわけだから、採点してあげればいいんだよね。
正常に動作するコードは不要と。
0211nobodyさん
2006/03/14(火) 11:53:18ID:???藻前が勝手に消えてくれると(゚д゚)ウマー
0212nobodyさん
2006/03/14(火) 12:11:21ID:???マルチだったのかよ
0213nobodyさん
2006/03/14(火) 12:41:09ID:???0214149
2006/03/14(火) 14:29:16ID:K408BhkZとりあえず、釣りかもしんないけど、マジで解答ほしいので、マジレスしてみる。
>>209
何ゆえその1行で仕事と判断?丁寧に記入するヤツはすべて仕事なの?
>>210
確かに、これはおかしい。ごめんね。採点じゃなくて、校正・訂正・指導、まぁ何でも良いけど、動くように教えてplz
>>211
あんたのような揚げ足取りが消えてくれた方が2chシステム的にはウマーだと思うが?
>>212
某Q&Aサイトで質問→解答なし。→質問削除→さらに別のQ&Aサイトで質問→有効回答なし。→質問終了→2chに書き込み→即日解答。しかもビンゴ!
どこがマルチよ?
厨房か工房かしらんが、言葉遣いもそれなりにあわせてみたよ。
0216nobodyさん
2006/03/14(火) 14:52:48ID:???> 某Q&Aサイトで質問→解答なし。→質問削除→さらに別のQ&Aサイトで質問→有効回答なし。→質問終了→2chに書き込み→即日解答。しかもビンゴ!
どう見てもマルチです、本当に(ry
そういう場合は、ここで聞いたけど回答が無かったと、元の質問を示すのが慣例。
もしくは事前に断わるか。
0217nobodyさん
2006/03/14(火) 14:58:34ID:???その言い分を真に受けるとすると、前の質問が close してから質問してるみたいだし、
そゆのはマルチとは言わないんじゃね?
0218nobodyさん
2006/03/14(火) 15:03:25ID:???それなら「他のところで質問をしたけど答えが出なかった」だけでもいいから、
事前に断わるべきだろう。
答える奴だって人間だから、感じ悪いと思う奴だっているよ。
それぐらい、常識で判断してほしい。
0219nobodyさん
NGNGこれ何か意味あんのか。
つーかYahoo掲示板でも行けよカス
0220nobodyさん
2006/03/14(火) 15:20:39ID:???事前に断りがあるかどうかは別にして、
>>212で
>> 前回どこよりもすばやく
>マルチだったのかよ
この1行でマルチと決め付ける必要性も無いと思うがな
>>212 =>>218
だった場合、オマエに常識を語る資格はそうないと思われ
0223nobodyさん
NGNG馬鹿と馬鹿が煽り合ってんの
見てて楽しいからもっとやれよ
0224nobodyさん
2006/03/14(火) 16:03:40ID:???0227nobodyさん
2006/03/14(火) 16:47:10ID:???0228nobodyさん
2006/03/14(火) 16:54:23ID:???0229nobodyさん
2006/03/14(火) 17:04:47ID:???答えてあげたい気持ちは満々なのだが、
いかんせん質問の意味がさっぱりわからないので答えようがない。
0231nobodyさん
2006/03/14(火) 20:12:03ID:???こんな感じので、コメント中にURLが含まれる場合
そのURLへのリンクを作成して
表示される文字列はURLではなく
「外部リンク」とか任意の文字列にしたい場合はどのようにすれば良いのでしょうか?
0232nobodyさん
2006/03/14(火) 20:28:50ID:???0233nobodyさん
2006/03/14(火) 20:48:54ID:???</a>直前の $1 とか $2 の部分を 外部リンク とでも書き換えてください
0234nobodyさん
2006/03/14(火) 23:21:54ID:???あいかわらずのスキルなんでつね。w
0235nobodyさん
2006/03/14(火) 23:26:28ID:???0237nobodyさん
2006/03/14(火) 23:31:05ID:???0240nobodyさん
2006/03/19(日) 10:45:53ID:???$a = "あいうえおかきくけこ$x{'TEST'}たちつてとなにぬねの";
の場合と
$b = "あいうえおかきくけこ".$x{'TEST'}."たちつてとなにぬねの";
とか
$c = 'あいうえおかきくけこ'.$x{'TEST'}.'たちつてとなにぬねの';
って感じで連結するのはどれが一番お薦め?
連結をあまり好ましくないっぽい書き方してる書き込みを昔見た気がするので、
$aのやり方の方がいいのかなとも思ったけど、
負荷的にはなるべくシングルクォーテーション使ったほうがよさそうだしで、ちょっと迷ってまっす。
ひょっとしたら連結の方が負荷高かったりしたら元も子もないし・・・
0241nobodyさん
2006/03/19(日) 11:08:41ID:???0242nobodyさん
2006/03/19(日) 11:31:18ID:???適材適所です。
頑なに法則を守っていると可読性が落ちたりします。
速度を考えるなら、連結自体から見直せば良いかもしれません。
0243nobodyさん
2006/03/19(日) 11:52:52ID:???strcat しまくるべきだな。
0244nobodyさん
2006/03/19(日) 12:12:44ID:???2番目と3番目は内部では全く同じコードとして実行される。
1番目との比較は、実装や環境に依存。
なので、自分の対象とする環境でベンチマークとりなされ。
0245nobodyさん
2006/03/19(日) 12:50:57ID:???> 2番目と3番目は内部では全く同じコードとして実行される。
クオートの違いがあるので、全く同じであるはずがないと思われ。
0247nobodyさん
2006/03/19(日) 13:37:59ID:???0248nobodyさん
2006/03/19(日) 14:01:44ID:???>>246
> そう思うならコード覗いてみ
で、どの部分で同じ処理をしているのか、具体的に提示してよ。
0249nobodyさん
2006/03/19(日) 15:23:23ID:???ttp://allabout.co.jp/career/cgiperl/closeup/CU20050131A/index3.htm
ここ参考にしてそのままコピペしてもエラーになるのはなんで?
モジュールはちゃんとインストールされてる
0250nobodyさん
2006/03/19(日) 15:47:58ID:???1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
0251nobodyさん
2006/03/19(日) 15:56:26ID:???よーしパパ暇だから両者の言い分を解説しちゃうぞー
>>244の言い分
$ perl -MO=Terse -e 'qq[hoge].$x.qq[fuga]'
$ perl -MO=Terse -e 'q[hoge].$x.q[fuga]'
を見るとバイトコードレベルで行われる処理は同じである。
>>245の言い分
パーサが変数の展開を考慮しなくてはいけなくなるのだから、
""の方が必要な処理は多いはずだ。
で、5.8.7でバイトコードを覗いてみると、""はパース時に中に変数展開が
含まれていた場合のみ連結を行うバイトコードに変換されるので、
そんなに気にする必要はないと思われる。古いバージョンではどうか知らないけど。
それよりも可読性等を重視するべきだと思う。
0252nobodyさん
2006/03/19(日) 16:03:07ID:???こんな古い言葉使ってる老人って・・・。
0253nobodyさん
2006/03/19(日) 17:56:12ID:???\"でエスケープした場合も実は対して気にするレベルじゃ無さそうなのかな。
0254nobodyさん
2006/03/19(日) 17:59:18ID:???0255nobodyさん
2006/03/19(日) 18:10:48ID:???負荷が馬鹿にならないレベルだと、ちょっとの差が大きな違いになりそうじゃない?
0256nobodyさん
2006/03/19(日) 18:12:55ID:???モジュール同士、CGIで動作のどちらでやっても速度はperl>phpになるだろうし、
perl以外に良い選択肢ってそもそも有るんだろうか。
Cは流石にだるいし。
0257nobodyさん
2006/03/19(日) 18:15:33ID:???0258nobodyさん
2006/03/19(日) 18:15:59ID:3oCqRbiL0259nobodyさん
2006/03/19(日) 18:22:14ID:???phpは軽い早いって嘘って事?
0260nobodyさん
2006/03/19(日) 18:27:56ID:???大きな違いがある場所では、xs とか書けばよいのでは?
んで、そんなものを鯖 1 台でさばくんかね?
> phpは軽い早いって嘘って事?
一部嘘かもね。ぐぐればいろいろベンチあるぞ。
0261nobodyさん
2006/03/19(日) 18:36:18ID:???0262nobodyさん
2006/03/19(日) 18:46:28ID:???0263nobodyさん
2006/03/19(日) 18:49:15ID:???perlcc -B
0264nobodyさん
2006/03/19(日) 21:10:06ID:???ただ、眉毛剃ると空気抵抗が減って走るの早くなるよ、
ってのと同じレベルの話なわけだが。
まぁ、初心者でもできるしお手軽だわなw
0265nobodyさん
2006/03/19(日) 21:11:40ID:???0266nobodyさん
2006/03/19(日) 21:22:33ID:???0267nobodyさん
2006/03/19(日) 21:27:36ID:???0268nobodyさん
2006/03/19(日) 21:28:35ID:???0269nobodyさん
2006/03/19(日) 21:41:19ID:???結局、そういうことだよね。
' ' の方が速くなる気がして気持ちぃー (気のせい) って香具師はそうすりゃいいし、
開発効率&可読性を取るぜー (現実的) って香具師はそうすりゃいい。
0270nobodyさん
2006/03/19(日) 21:42:41ID:???どうせ色分けしてるし。
0271nobodyさん
2006/03/19(日) 21:48:41ID:???0272nobodyさん
2006/03/19(日) 21:56:33ID:???0273nobodyさん
2006/03/19(日) 22:00:31ID:???0274nobodyさん
2006/03/19(日) 22:29:27ID:???■ このスレッドは過去ログ倉庫に格納されています