Perl コーディング初心者質問コーナー Part29
953 :
950 :03/11/25 05:29 ID:???
>>952 最初書き込んだ後、こちらのスレの方が適切と思って
書きました。他にはマルチポストしてません。
すみません。
954 :
ぱくちゃん :03/11/25 17:40 ID:UdoS9gNt
WindowsXPでPerlによるビープ音の鳴らす方法について誰か教えていただけないでしょうか?
Win32::API があればいけそうだが
print "マルチ\a"
[数値],[文字列] という配列があるとして 例1 11,AAA 5,BBB 1,AAA 54,BBB 8,CCC 同じ文字の数値を加算してまとめたいのですが 例2 (例1を処理したとした場合) 12,AAA 59,BBB 8,CCC どのように処理すれば良いですか? ご教授お願い致します。
>959 文字列と数字をmapで対応させる。
すまん、Cスレと思ってた_no 連想配列だな。 各行をsplitとかで区切って[文字列]をキーにして[数値]を加算。
正規表現で例えば、 $test=~m/文字列/; 文字列の部分に ー が入っているとエラーになるのはどうしてでしょうか?
>962 「ー」の文字コードを調べてみてください すぐにわかります
$hoge と、${hoge} という表現をたまに見かけますが、 これってどういう違いがあるんでしょうか? ラクダ本には、「$hogeと同じだけど直後に英数字が続く場合に使うよ」って書いてあるんだけど いまいち意味がわかりません。 直後に英数字が続く場合って???
966 :
964 :03/11/26 12:05 ID:???
>>965 なるほど!
"abc$hogedef";
になっちゃうのを防ぐためか。
勉強になりますた。
有難う
967 :
962 :03/11/26 12:50 ID:???
>963 >964 ありがとう。%5Bの部分が]として認識しちゃうわけか。 シフトJISでなんとか解決できるようにがんばってみます。
968 :
ぱくちゃん :03/11/26 13:42 ID:+ZoCfoLg
>955-958 ありがとうございます。 はずかしながら、Wine32モジュールのダウンロード、インストールについて全然知りません。 ご教授お願いできないでしょうか?あと、コマンドプロンプトで perl -e "print \a"で行ったところSCALAR(0X2752C8)が出力されて音はなりませんでした。 用法が間違ってるのでしょうか?
>>968 print "\a"; #ダブルコーテで囲ってやってください
誰か次スレ立てないのか?
972 :
ぱくちゃん :03/11/26 14:25 ID:+ZoCfoLg
>969-970 どうもありがとうございます。 print文のほうはうまく行きました。 インストールは、教えのとおりぼちぼちやってみます。また、分からないことが あったときには、よろしくお願いいたします。
973 :
頭が混乱してきた :03/11/26 14:33 ID:EtEk92p5
Perlでは尚且つ(&&)が多言語と違い、覚えてなく使いにくいのですが、 if ( ($x eq '') && ($y eq '') ) 、をシンプルにしようと if ( (!$x) && (!$y) ) 、とすると目的の動作をしてくれません。 $x , $y の両方に値が入力されてない時にエラー(&error)を実行したいのですが、 混乱してきました・・・。
orじゃねーandだ
976 :
nobodyさん :03/11/26 14:50 ID:YnQ/9PIJ
つか&&でなるし
>971 スローペースだし990超えてからで良いんじゃない。
>>973 unless( $x and $y )
979 :
978 :03/11/26 15:40 ID:???
まちげーた。 両方空の時ってことね。 unless( $x or $y ) { &error(); }
>>973 error() if !$x && !$y;
error() if not $x and not $y;
error() if not $x || $y;
error() unless $x or $y;
error() if not "$x$y";
error() unless "$x$y";
981 :
973 :03/11/26 16:03 ID:???
こんな低レベルでくだらない質問に答えて頂き、皆さんありがとうございました。 unless は混乱しそうだったので、なるべく使わないでおこうかと思ってたのですが 779の方法がスマートだなと思ったので、改心して使用させて頂きます。
if 使って否定文かくより、 unless 使うほうがわかりやすいと思うのは俺だけか
C出身なせいか、unlessわかりづらい・・・ 最初のうち使おうとはしたが、読みかえしたとき 混乱したのでそれ以来使って無いなあ
if、unlessどっちでも良い時はif使ってるかな……。
unlessは6文字も打たなければならないので、ifの勝ち!
>>984 if、unlessどちらかにしなければならない時ってどんな時だ?
elsif使う時とか?
「!」だけで文の意味全部が否定されるから結構危険なものだと思っテル。 なのーで、 if ( !$hoge ) よりは unless ( $hoge )
if ( $a == 1 or $a == 2 or ... or $a == 49 or $a == 50 ) これを簡単にしたいのですが、何かいい方法はありますか?
if(1 <= $a && $a <= 50 && $a !~ /\D/)
>>987 my $foo = 2;
unless ($foo == 2) { print 'unless' }
elsif ($foo == 2) { print 'elsif' }
else { print 'else' }
うほっ、使えるのか……
994 :
989 :03/11/26 20:33 ID:???
>>990 あ、、、そうでした!
ありがとうございます!
/\bA\b/ 入力する文字列にA以外に何が含まれていてもいいけど, Aが入ってないと駄目って書き方あります?
/A/
>>989 if(a/50 <= 1 && a != 0)
>997 $が抜けてるがC使いの方ですか? あと、そのやり方だと、-20や10.8も入ってしまいますよ?
my @list = qw(1 50 1.0e1 +10 10_true 0 1.01 -1 51 0_def); foreach(@list){ &check_v($_); } exit; sub check_v { my $v = shift; print "$v = ${\($v+0)} : "; if ((int($v) == $v) and ($v >= 1) and ($v <= 50)){ print "true\n"; } else { print "false\n"; } } こんな感じじゃない? というか、値が整数かどうかは必要に応じて別でチェックすべきだと思う。
>999 >989や>990より難しくなってるだろ 1000get
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。