トップページphp
1001コメント315KB

Perl 初心者コーナー Part24

■ このスレッドは過去ログ倉庫に格納されています
0001 ◆fBgbHI04bQ 03/06/07 22:30ID:GbQKLcPE
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。


CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/

過去ログやお勧めサイトは >>2-10
0723nobodyさん03/06/22 00:13ID:???
>>721
何を問題にしているのかがわかりませんが何か?
>>722
@ORG[m .. n]じゃいかんの?
0724nobodyさん03/06/22 00:54ID:RPCqHkE2
バックボーンを非公開としているサーバー
はヘボイという事でしょうか?
0725nobodyさん03/06/22 01:11ID:???
>>716
ヴァカ抜かすな。
KCatchが補足できないエラーはきちんとKCatchのページに書いてある。読め。
あ、もう一つ補足できないエラーがあるな。
お前のねじれた脳味噌から生じた論理エラーだ。
0726nobodyさん03/06/22 01:37ID:???
いきなり質問スマソ。
漏れのHPのKENTWEBのチャットを設置してうまく動作したのを確認して
次はスタイルシート埋め込み。
DLしたら分かるけどwtalk2.cgiの200行目付近にHTMLに出力する記述があるからそこに次の一行を追加。
print OUT "<Link Rel=\"stylesheet\" Type=\"text/css\" Href=\"../../lib/memory.css\"><Blockquote><Blockquote><Blockquote><Blockquote>\n"
もちろん適当に入れたのでなくてそれらしくHEADタグの中に普通に埋め込み。こっちでは203行目ってことになるな。
で、文法チェッカーでみると、いじった筈のない205行目の
print OUT "参加者($num):$member<hr>\n<!--START-->\n";
でエラー。OUTを宣言する必要がありますか?とか言いおる。
かなり分かりにくいと思うので整理。
1.自分はKENTWEBで配布されている「WebTalk」というチャットスクリプトにスタイルシートを埋め込みたい。
2.<Link Rel="〜のタグを埋め込む為、wtalk2.cgiの203行目に↑のスクリプトを追加。
3.なぜかエラー。500InternalServerErrorらしい。んで早速文法チェッカー走らせてチェックさせたらいじった筈のない直後の205行目で文法エラー。OUTを宣言する必要がないとかなんとか。
だれか助けて><。
072772203/06/22 01:50ID:???
>>723
そ、そんな書き方あったんですね。。。さすがperl
0728nobodyさん03/06/22 01:53ID:???
>>721
ODBCのドライバの設定は必須ではない。必要なパラメータは全部connectストリングに埋め込む事もできる。

>>726
情けなくなるくらいヘボだな。追加した文の文末に「;」が無い。
この位の事でとうとうと泣き言並べ立てて恥ずかしくないか?
072972803/06/22 01:55ID:???
次スレは、シンタックスエラーの質問はお断りにしようぜ。きりが無い。
0730nobodyさん03/06/22 02:08ID:7kmjTzsL
>>726
(゚Д゚)ポカーン

ネタ・・・だよな?いくらなんでもここまで初心者はないよ・・・な?な?
0731nobodyさん03/06/22 02:21ID:???
>>729
それ以前に、エラーすら書かない奴がとにかく多い。
なんとか聞き出してみれば、500エラーとか抜かすし。
エラー書けっつーのはちゃんと>>1にも書いてあるんだがなあ。
0732nobodyさん03/06/22 04:03ID:UMFBhruU
1:画像の転送を(転送量を)軽くしたいです。
2:gzipを使ってみました。
3:どこかのサイトにもあったのですが、既に圧縮されている
  画像などに関しては圧縮されないみたいでした。
  100kbに対して100b程度減りはしました。

画像の転送量を減らす手段は他にありませんでしょうか?
0733nobodyさん03/06/22 04:36ID:???
>>709
ハッシュと配列を勉強しる。
0734nobodyさん03/06/22 06:17ID:???
PerlだけじゃなくてPHPでも同じだったので、何処に書けばいいか分からなかったんですが、こちらに。
CGIで作成したファイルですが、パーミッションを変更(666や777)してもFTPから削除できません…。
スーパーユーザーではないので、所有者の変更をする事も出来ません。
rootで無い限り、どうする事も出来ないんでしょうか?
#CGIから削除するしかない?。それともサーバーによるものでしょうか?
#ちなみに、ディレクトリの場合は削除する事ができました。
0735nobodyさん03/06/22 08:36ID:???
そりゃpermissionじゃない。ownerの問題。よって、
chown ore:ore hoge.cgi
して、自分のファイルにしちゃう。
0736nobodyさん03/06/22 10:55ID:???
&query_condition(%house))
みたいに、ハッシュ配列を関数に渡したとき、
その引数を関数内で得るにはどうすればいいのでしょうか?

普段ならmy ($foo, $bar, hoge) = @_; とするところの話しです。
0737nobodyさん03/06/22 11:01ID:???
>>734 ファイルを削除するにはそのファイルのおかれてるディレクトリに書き込み権があればいい。
>>735 他人のファイルの所有者変更できるのは特権が要るだろうが。ボケッ
0738nobodyさん03/06/22 11:30ID:???
>>736
sub query_condition(%)
{
my $h = shift;
$h->{key};
}

query_condition(%house);
073973603/06/22 11:53ID:???
>>738
なるほど。ありがとうございます。
0740nobodyさん03/06/22 11:54ID:???
&query_condition($foo,$bar);

sub query_condition{
my ($lineid, $staname) = @_;

とやったら、
Can't use global @_ in "my" at search.cgi line 370.
と言われたのですが、
このエラーメッセージの意図がわかりません。
なんでこんなこといわれなきゃいけないんでしょうか?
0741nobodyさん03/06/22 12:01ID:???
>>740
前後を見ないと何とも言えない。

> なんでこんなこといわれなきゃいけないんでしょうか?

間違ってるからだろ。
074274003/06/22 12:17ID:???
>>741
そうですね、すいませんでした。もういちどよくみなおしてみます。
0743nobodyさん03/06/22 12:21ID:???
>>740
$lineidか$stanameがグローバルでどこかにあるんじゃないか?
0744nobodyさん03/06/22 12:22ID:???
>>737
自分の所有物でも所有者を変えることはできないけど。
0745nobodyさん03/06/22 12:30ID:???
そもそも??7なら誰かれ構わず削除出来るっしょ。
074674003/06/22 12:37ID:???
>>743
ビンゴでしたもようです。。。thankxです
0747nobodyさん03/06/22 13:33ID:???
>>737
有難うございます。
ディレクトリのパーミッションが775だったのが原因みたいです。
そのディレクトリも、CGIによって作成したものなんですが、
一生懸命0777を与えてるんですが、どうしても777になってくれません(;ω;)#775になってしまう。
ちなみに、その上のディレクトリはFTPから作成したもので、書き込みもOKです。
サーバーの設定で、ディレクトリ作成時に一般の書き込み許可させないって事とかあるのでしょうか…
兎に角、もうちょい頑張ってみます。
0748nobodyさん03/06/22 13:39ID:???
>>744
出来るものもある。System-IIIとか。

>>747
CGIでパーミッション変えればいい。
つーかユーザ権限でCGI実行できないヘボイところはとっとと見限ったほうが良い。
0749nobodyさん03/06/22 13:41ID:???
>>747
umask関数を調べてみれば解決するでしょう。
0750nobodyさん03/06/22 15:47ID:wDjVUYGM
$STA[$i]->{lineid}
$STA[$i]->{staname}
($iには0から10くらい入ってる)
には文字列があてはめられてるのに、

for ($j=0;$j<=$#STA;$j++){
    push (@TMPSTALIST,$STA[$j]);
}

foreach (@TMPSTALIST){
    $HTMLStaLine .= $TMPSTALIST[$_]->{staid}."/" .$TMPSTALIST[$_]->{staname}|;
}

で、何も表示してくれないんですが、なぜなんでしょうか?
075175003/06/22 15:47ID:wDjVUYGM
あ、もちろん、
$HTMLStaLineをprintしてます。
075273203/06/22 16:18ID:qinZbGMm
1:画像の転送を(転送量を)軽くしたいです。
2:gzipを使ってみました。
3:どこかのサイトにもあったのですが、既に圧縮されている
  画像などに関しては圧縮されないみたいでした。
  100kbに対して100b程度減りはしました。

画像の転送量を減らす手段は他にありませんでしょうか?
0753nobodyさん03/06/22 16:23ID:???
>752
Perlのコーディングによる問題ではない。
よってスレ違い。
0754nobodyさん03/06/22 16:44ID:???
>>752
画像を使わない。
075560303/06/22 16:50ID:???
>>752
画像のファイル構造自体が圧縮形式というつっこみでいいか?
0756アラー氏 ◆.GAf6ZDA2c 03/06/22 17:16ID:???
ここへ書けや!
http://homepage3.nifty.com/arashi/index.html
075775203/06/22 17:49ID:???
>>755
ある意味、望んだ答えでした。ありがとうございます。
0758nobodyさん03/06/22 19:47ID:???
myで宣言した変数は、有効範囲を外れると
メモリもクリアされるんでしょうか?
0759nobodyさん03/06/22 20:05ID:???
>>758
どこからも参照されなくなった時点でクリアされる。

逆に言えば、何かから参照されている限り、スコープを外れてもメモリの内容は残る。
たとえば、以下のようにサブルーチン内でmyした変数のリファレンスを返すということもできる。

$var = hoge();
print $$var;  # うんこ

sub hoge {
  my $abc = 'うんこ';
  return \$abc;
}
0760nobodyさん03/06/22 20:29ID:S8oOZHOQ
プログラム板から、移動してきました。

複数の検索エンジンに、キーワードを投げて
その結果をまとめてから出力というものを書いています。

それで、UNIX上のApacheでcgiを走らせているので
`wget $URL`;
$html = `w3m -dump_source $URL`;
そして、ファイルに$htmlを保存

などを試してみましたが、
wgetの方はURLが長すぎてダウンロード自体に失敗して、
w3mの方は、端末で同じコマンドを打つ分には成功しますが、
実行しても、何もファイルに書き込まれていなくて上手く取得ができません。

どうか、ご教授お願いします。

0761nobodyさん03/06/22 20:41ID:???
>>760
>>1を200回読んで出直せバカ
0762nobodyさん03/06/22 20:49ID:???
>>760
perlのコーディングと一体何の関係があるのかと。
076375003/06/22 20:50ID:Rv0SCDPi
どなたかおながいします。このコードだけだと問題ない?
0764nobodyさん03/06/22 20:51ID:???
そうですね…perlを使っているので、一気にここ来ちゃいました。
申し訳御座いませんでした。
0765nobodyさん03/06/22 21:09ID:???
>>763
foreach (@TMPSTALIST){
  $HTMLStaLine .= $_->{lineid} . "/" . $_->{staname};
}

どういう結果が欲しいのかわからんのでこれだけ。
076675003/06/22 21:35ID:a19vkXUc
>>765 長くかくとこんなことしたいんですけどねぇ。。。
    #SELECT始まり!
    $HTMLStaLine .= qq|<select name="staid" size="10" multiple>\n|;
    for ($i=0;$i<=$#GlobalLineidList;$i++){
        #沿線名表示!
        $HTMLStaLine .= qq|<option value="">----- $LINE[$GlobalLineidList[$i]]->{linename} -----</option>|;
        undef @TMPSTALIST;
        for ($j=0;$j<=$#STA;$j++){
            if ($STA[$j]->{lineid} == $GlobalLineidList[$i]){
                push (@TMPSTALIST,$STA[$j]);
            }
        }
        #seqでソート
        @TMPSTALIST = sort { (${TMPSTALIST[$a]->{seq}} <=> ${TMPSTALIST[$b]->{seq}}) } 0 .. $#TMPSTALIST;
        #沿線に属する駅名一覧を表示!
        foreach (@TMPSTALIST){
            $HTMLStaLine .= qq|<option value="|.$TMPSTALIST[$_]->{staid}.qq|">|.$TMPSTALIST[$_]->{staname}.qq|</option>\n|;
        }
    }
    #SELECT終わり!
    $HTMLStaLine .=qq|</select>\n|;
0767nobodyさん03/06/22 21:49ID:???
>>766
いや、あのさ、間違ったソースを晒されても「何がしたいのか」は分からないんだが……
0768nobodyさん03/06/22 21:59ID:???
>759
丁寧な説明有難うございます。
調子にのてもう一つお聞きしたいのですが、
リファレンスを受け取った側で、undefすると
呼び出し元もクリアされるのでしょうか?^^;

$var = hoge();
print $$var;  # うんこ
undef($var); <- hogeの$abcは要らないのでクリアしたい

その後の処理…

sub hoge {
  my $abc = 'うんこ';
  return \$abc;
}

sub { return \%dekai_data; }
大きな値とか返した場合、クリアする必要はあるでしょうか
076975003/06/22 23:46ID:MaT7PvCU
>>767

用は、
$STA[$i]->{lineid}
$STA[$i]->{staname}
($iには0から10くらい入ってる)なのに、
 push (@TMPSTALIST,$STA[$j]);
すると、
$STA[$i]->{lineid}
は値が入ってるのに、
$TMPSTALIST[$i]->{lineid}
には値が入ってないのです。
pushした直後でも。。。
0770-03/06/22 23:48ID:pFJThKfu
成功者になりたい人は読んでください!
「クーポン屋の仕事は簡単!」
「HPにバナーを貼ればOK!」
「年商3000万円も夢じゃない!」
「あなたの努力次第です。」
http://www.c-gmf.com/index1.htm
077175003/06/22 23:53ID:???
すいません、
@TMP = sort { (${TMPSTALIST[$a]->{seq}} <=> ${TMPSTALIST[$b]->{seq}}) } 0 .. $#TMPSTALIST;
とやるところを、
@TMPSTALIST; = sort { (${TMPSTALIST[$a]->{seq}} <=> ${TMPSTALIST[$b]->{seq}}) } 0 .. $#TMPSTALIST;
とやっていたのが原因でした。

$TMPSTALIST[$i]->{lineid}には値がちゃんと入っていたようです。
0772nobodyさん03/06/23 01:40ID:8VAV54DK
どうしても解決出来ず、同じ質問を2度することになってしまいました。
どなたかお助けください。
1:Perlからサムネイル(縮小)画像を作りたいです。
2:GDやPerlMagickなどがあることを知り、使おうと考えました。
3:私の使っているサーバにはインストールされていません。

・インストール無しで使える、画像縮小のモジュール
・画像を縮小するための具体的なアルゴリズム
・インストールが必要なGD,PerlMagickモジュールの改造方法
のような情報を求めています。
(jpeg/png/gifなどについて行いたいです。(1つしか出来なくても構いません))

色々調べてはいるのですが、GD,PerlMagickのものばかりで
良い情報が見つけることが出来ませんでした。何卒、よろしくお願いします。
0773nobodyさん03/06/23 02:07ID:???
>>772
いや、もう無理だって答えでてるでしょ?
自分で作る気がないなら何度質問しても無駄。
むしろ、君がインストールしないで使えるモノを作って公開する方が良い。
0774_03/06/23 02:09ID:???
http://homepage.mac.com/hiroyuki44/
0775nobodyさん03/06/23 02:13ID:???
>・インストールが必要なGD,PerlMagickモジュールの改造方法のような情報を求めています。
要するに自分で画像処理をすれば良い。
ttp://www.st.rim.or.jp/~syamaura/gifanime/gifabout/gifabout.html
こういう感じのページ探して、自前でやるとよろし。
#ファイルフォーマットをまとめたページ(英語)がどっかにあったのだけど、
#URL失念してるので貼れない。スマソ。

多分この先はスレ違いになるのでプログラム板等に移動した方が良い。
#が、今画像処理スレはない
0776nobodyさん03/06/23 02:41ID:???
>772
自分はロリポップでIMAGE::MAGICKを使い、デジカメ写真を画面大、
200ピクセルくらい、80ピクセルくらいの3つに一気に縮小している。

その時、ローカルサーバーにIもMAGE::MAGICKをインストールし、
ロリポップが檄重のときはローカルで縮小し、サーバーに上げるルーチンも作ったけど、
その方法も一案では。
ローカルサーバーへのインストールは
http://yassu.no-ip.com/linux/httpd.htm
などを参照。
0777nobodyさん03/06/23 11:54ID:???
>>772
>>776
ああ、そうか。ローカルに入れれば何の問題もないよな。
よかったな、>>772, >>687
これでモジュールを入れられないとかいう泣き言を言わなくてよくなったぞ。
0778nobodyさん03/06/23 11:55ID:???
1秒毎に.を出力するプログラムが動きません。
perl -e '$cnt = 100; while($cnt > 0) {sleep 1; print "."; $cnt--;}'
どこがいけないのでしょうか。
0779nobodyさん03/06/23 12:20ID:QgEnyxPf
昨日からPerlに挑戦中の者です。
手始めにPerlで書かれた簡易チャットのソースをコピーして使っています。
微妙にスレの趣旨と違うかもしれませんが、どうか教えて下さい。

チャットの発言内容を書き込んでサブミットボタンを押した時、その内容をcgiファイルに送る。
その後、発言内容のテキストボックスを空にしたいのです。
ジャバスクリプトでサブミットボタンにonClickを付けてファンクションを呼び出し、
そのファンクション内に発言内容のテキストボックスのvalueをnullにする仕様にしたら、
チャットのログ部分に「null」とそのまま出てしまいました。

どなたか解決策をお願いします。


0780nobodyさん03/06/23 12:28ID:???
>>778
「動きません」じゃ分からん。
どう動かないのか(エラーが出る、フリーズする、こういう結果がほしいのにこうなってしまう等)を
必ず書くこと。

>>779
微妙にどころか、まるっきりスレ違いというか板違い。
0781nobodyさん03/06/23 12:40ID:???
>>780
動かないって言えば分かるだろ、出力がない。
プログラムが終わらない。うんともすんとも言わない。
0782nobodyさん03/06/23 12:41ID:???
>>780
ところでちみは、相当の厨だな。フリーズだって(藁
0783nobodyさん03/06/23 13:01ID:???
>781
>780ではないが、この初心者スレでは、それ以外の場合でも「動かない」と表現する奴がいる。
というか多い。
それくらいわかるだろ。

バッファリングを止めても変わらないか?
0784nobodyさん03/06/23 13:24ID:???
俺も一発でバッファリングのせいだと分かったけど・・・
0785nobodyさん03/06/23 13:28ID:???
「動かない」って言ってるんだから、100秒待っても動かないんじゃねーの?(ワラ
0786nobodyさん03/06/23 13:46ID:???
>>783, >>784
ありがとう。
$| = 1;
を入れたら無事出力できました。
0787nobodyさん03/06/23 16:14ID:???
Perlで掲示板を作っています

スクリプトの最初の方で

if ($mode eq 'regist') { ®ist; }
elsif ($mode eq 'find') { &find; }
         :

とズラズラ書き並べるのはカッコ悪いのですが
何か恰好良い方法はありませんか?
0788nobodyさん03/06/23 16:19ID:???
>>787
カッコワルイって・・・。
サブルーチンを上に書けば?
078978703/06/23 16:29ID:???
すいません言葉が足りませんでした。
use CGI;
$q = new CGI;
$mode = $q -> param('mode');

とかしますよね。でもサブルーチン使ったとしても
どこかに
> if ($mode eq 'regist') { ®ist; }
> elsif ($mode eq 'find') { &find; }
>          :
みたいのはどこかに絶対あるわけで
これがなんとかならないかな とか

SWITCH:
{
if ($mode eq = "regist" ) (®ist;last SWITCH)
if ($mode eq = "find" ) (&find;last SWITCH)
         :
}
こうやれば多少はましかな‥
でもズラズラ書くのは変わらないので恰好良くないな とか。
0790nobodyさん03/06/23 16:36ID:???
ずらずら書いたらダメなのかよっ!
0791nobodyさん03/06/23 16:38ID:???
>>789
eq = てなんどい。
Perlにかっこよさを求めるのはおろかな気が。


サブルーチンごとに分けずに、
if($mode eq 'assa'){
   処理
   処理
}
ってしたら?醜いけど。
0792nobodyさん03/06/23 16:40ID:???
>>789
他に方法はあるか?
ハッシュで関数テーブルみたいなものをつくるか?
それでも初期化時にずらずらと書くことになるけど。
0793nobodyさん03/06/23 16:41ID:???
>787
こうすると一つで済むよ。
eval(&$mode);

このスクリプト(?)の指摘禁止ね :-)
079478703/06/23 16:42ID:???
そうですね。
>Perlにかっこよさを求めるのはおろかな気が。
これが全てですね。 適当に実装しますです。
0795nobodyさん03/06/23 17:20ID:vdloYxxu
DBMってtieでハッシュに関連付けた時点で、すべて読み込まれて、メモリにはいるんですか?
0796nobodyさん03/06/23 18:25ID:???
>>795
はいる。
メモリーキャッシュにまるごと入るからこそ早いとも言える。
0797nobodyさん03/06/23 18:44ID:???
>>796 サンクス
200kb位あるのを、丸まま読み込んだらまずいですかね。
CGI利用です。
0798nobodyさん03/06/23 18:51ID:???
>>797
やってみろよ
メモリがどれだけ割り当てられているか、残りはどれぐらいかなんて
環境次第なんだから
0799nobodyさん03/06/23 19:03ID:???
>>798
ローカルでは問題ないんですが、共有鯖だとどうかな、と。
まぁ、あげてみて試してみます。
同じことをテキスト保存でやったら、ファイルサイズは20`くらいなんですが、遅い。
どうしようか・・・。
0800nobodyさん03/06/23 19:11ID:???
>>795 かわいそうに、、、、まんまと騙されてるね。
通常、索引編成ファイルのキーや値は、任意でないかぎりメモリに入る事はないよ。
Perlだと、確かにDBMファイルとの接続速度は遅いけど、データは読込んでないから、大丈夫。
796とか798の言ってることは相手にすんな。
0801nobodyさん03/06/23 21:03ID:???
>>800
へ〜
物 知 り で す ね
0802nobodyさん03/06/23 22:02ID:???
>>801
間違いを指摘されたからってそうムキになるなよ。
0803nobodyさん03/06/23 23:34ID:???
>>787
Perlでswtich文使えたらいいなー、って思うことしきり。
0804nobodyさん 03/06/23 23:46ID:???
>>787
リファレンスと配列を使うとか、無名のサブルーチンで、ハッシュを使うとか書き方あると思うけどねィ・・・

んで、カッコいいよりも見やすい記述を心がけるべきだと思ったり・・・
0805nobodyさん03/06/23 23:59ID:???
>>803
だね。switchあるだろ、とか思ってリファレンス見直して 無いことに気付いたw
080680303/06/24 00:16ID:???
>>805
同じことしてるなw
0807nobodyさん03/06/24 00:20ID:???
まあ、switch無くても、
if
elsif
elsif
elsif
で処理速度は落ちないんだけど、見た目が、、、
0808nobodyさん03/06/24 00:26ID:???
>>807
見た目を気にするならSwitchもどき使えばいいんであ?
ttp://tech-web.net/perlmania/perlsyn3.html
0809nobodyさん03/06/24 00:41ID:???
>>808
ちょっと冗長すぎて、それならまだif elseのほうが・・・
swtich使いたいのは、見た目がスッキリするからなので
0810nobodyさん03/06/24 00:41ID:???
うーん、その他の方法も見た目が良いとは言えないな
0811nobodyさん03/06/24 03:06ID:???
ある変数$Aの先頭2バイトを$Bへ代入し、$Aには先頭2バイトの次からが残る。

単純な質問かもしれませんが、どうか教えてください。キーワードが考え付かず、
ググっても見つけられませんでした。(←力不足っす。。)
0812nobodyさん03/06/24 03:31ID:???
>>811
TMTOWTDI.

# substr
($A, $B) = (substr($A, 2), substr($A, 0, 2));

# unpack
($B, $A) = unpack 'A2A*', $A;

# 置換1
$A =~ s/^(..)//;
$B = $1;

# 置換2
$A =~ s/^(..)/($B = $1, '')[1]/e;

# 回りくどい方法
@tmp = split //, $A;
$B = join '', splice @tmp, 0, 2;
$A = join '', @tmp;
0813nobodyさん03/06/24 03:31ID:???

s/^(.{2})//;
$1;

こんなんじゃダメかね、ダメだね。文字だもんね。
あんたのやろうとしてることは、関数で出来るよきっと。
普段そうゆう処理しないから名前は知らんけど。
どっかのサイトの関数一覧をどうぞ。
上の正規表現で十分ならそちらをどうぞ。
08145203/06/24 03:37ID:???
ありがと〜〜〜〜〜〜
# unpack
($B, $A) = unpack 'A2A*', $A;
コレ使わせてもらいました。
0815nobodyさん03/06/24 04:16ID:???
記憶があいまいだけど、5.?に無かったっけ?<Switch
0816nobodyさん03/06/24 05:14ID:???
>>812>>813
変態的にすごいな。
そういうのは一瞬で浮かぶんでしょうか?
0817nobodyさん03/06/24 06:44ID:???
浮かぶもんだよ。
アルゴリズムを見れば、どの関数を使うべきか直感的に分かるから。
たくさんコードを書いてると自然に身についてくる。
0818nobodyさん03/06/24 07:03ID:???
みんな変数名やサブルーチンの名前付けるときってどうしてる?
分かりやすい名前付けた方が後々分かりやすいって聞くけど、
その名前が思い付かないとき…。

漏れコーディングより、名前で時間くう…。
こんな漏れって変でつか…?
0819nobodyさん03/06/24 07:31ID:???
>>815
少なくとも 5.8.0 には標準で Switch.pm がある。

use Switch;
switch ($val) {
  case 1     { print "number 1" }
  case "a"    { print "string a" }
  case [1..10,42] { print "number in list" }
  case (@array) { print "number in list" }
  case /\w+/  { print "pattern" }
  case qr/\w+/ { print "pattern" }
  case (%hash) { print "entry in hash" }
  case (\%hash) { print "entry in hash" }
  case (\&sub) { print "arg to subroutine" }
  else       { print "previous case not true" }
}
0820nobodyさん03/06/24 08:07ID:???
>>818
$hensuに。
0821nobodyさん03/06/24 08:34ID:???
>>818
変数名の prefix に規則性持たせてつけてるよ
082281803/06/24 08:49ID:???
>>820
どういうこと?
とりあえず$hensuにしとくってこと?

>>821
漏れもVBやってたときは付けてた。
■ このスレッドは過去ログ倉庫に格納されています