Perl コーディング初心者質問コーナー Part29

このエントリーをはてなブックマークに追加
952nobodyさん:03/11/25 05:09 ID:???
つーか、マルチポストだし>>950
953950:03/11/25 05:29 ID:???
>>952
最初書き込んだ後、こちらのスレの方が適切と思って
書きました。他にはマルチポストしてません。
すみません。
954ぱくちゃん:03/11/25 17:40 ID:UdoS9gNt
WindowsXPでPerlによるビープ音の鳴らす方法について誰か教えていただけないでしょうか?
955nobodyさん:03/11/25 18:08 ID:???
Win32::API があればいけそうだが
956nobodyさん:03/11/25 18:20 ID:???
957nobodyさん:03/11/25 19:43 ID:???
958nobodyさん:03/11/25 23:38 ID:???
print "マルチ\a"
959nobodyさん:03/11/26 04:45 ID:???
[数値],[文字列] という配列があるとして

例1
11,AAA
5,BBB
1,AAA
54,BBB
8,CCC

同じ文字の数値を加算してまとめたいのですが

例2 (例1を処理したとした場合)
12,AAA
59,BBB
8,CCC

どのように処理すれば良いですか?
ご教授お願い致します。


960nobodyさん:03/11/26 04:59 ID:???
>959
文字列と数字をmapで対応させる。
961nobodyさん:03/11/26 05:01 ID:???
すまん、Cスレと思ってた_no

連想配列だな。
各行をsplitとかで区切って[文字列]をキーにして[数値]を加算。
962nobodyさん:03/11/26 11:04 ID:???
正規表現で例えば、
$test=~m/文字列/;
文字列の部分に ー が入っているとエラーになるのはどうしてでしょうか?
963nobodyさん:03/11/26 11:08 ID:???
>962
「ー」の文字コードを調べてみてください
すぐにわかります
964nobodyさん:03/11/26 11:33 ID:???
$hoge と、${hoge} という表現をたまに見かけますが、
これってどういう違いがあるんでしょうか?
ラクダ本には、「$hogeと同じだけど直後に英数字が続く場合に使うよ」って書いてあるんだけど
いまいち意味がわかりません。

直後に英数字が続く場合って???
965nobodyさん:03/11/26 11:55 ID:???
>>962
http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm

>>964
my $hoge = 'def';
my $fuga = "abc${hoge}ghi";
966964:03/11/26 12:05 ID:???
>>965
なるほど!
"abc$hogedef";
になっちゃうのを防ぐためか。
勉強になりますた。
有難う
967962: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)が出力されて音はなりませんでした。
用法が間違ってるのでしょうか?
969nobodyさん:03/11/26 13:56 ID:???
>>968
print "\a"; #ダブルコーテで囲ってやってください
970nobodyさん:03/11/26 14:07 ID:???
>>968
> Wine32モジュールのダウンロード、インストール
http://search.cpan.org/~acalpini/Win32-API-0.41/ なり
http://search.cpan.org/~giulienk/Audio-Beep-0.10/ なり
から Download して同梱のドキュメントを読むか、
PPM でインストール。

> perl -e "print \a"
perl -e "print \"\a\""
971nobodyさん:03/11/26 14:18 ID:???
誰か次スレ立てないのか?
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)を実行したいのですが、
混乱してきました・・・。
974nobodyさん:03/11/26 14:47 ID:???
>>973
or使えばいいじゃn
975nobodyさん:03/11/26 14:49 ID:???
orじゃねーandだ
976nobodyさん:03/11/26 14:50 ID:YnQ/9PIJ
つか&&でなるし
977nobodyさん:03/11/26 15:16 ID:???
>971
スローペースだし990超えてからで良いんじゃない。
978nobodyさん:03/11/26 15:31 ID:???
>>973
unless( $x and $y )
979978:03/11/26 15:40 ID:???
まちげーた。
両方空の時ってことね。

unless( $x or $y ) { &error(); }
980nobodyさん:03/11/26 15:42 ID:???
>>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";
981973:03/11/26 16:03 ID:???
こんな低レベルでくだらない質問に答えて頂き、皆さんありがとうございました。

unless は混乱しそうだったので、なるべく使わないでおこうかと思ってたのですが
779の方法がスマートだなと思ったので、改心して使用させて頂きます。
982nobodyさん:03/11/26 16:10 ID:???
if 使って否定文かくより、
unless 使うほうがわかりやすいと思うのは俺だけか
983nobodyさん:03/11/26 17:42 ID:???
C出身なせいか、unlessわかりづらい・・・
最初のうち使おうとはしたが、読みかえしたとき
混乱したのでそれ以来使って無いなあ
984nobodyさん:03/11/26 19:44 ID:???
if、unlessどっちでも良い時はif使ってるかな……。
985nobodyさん:03/11/26 19:44 ID:???
unlessは6文字も打たなければならないので、ifの勝ち!
986nobodyさん:03/11/26 19:46 ID:???
>>984
if、unlessどちらかにしなければならない時ってどんな時だ?
987nobodyさん:03/11/26 20:03 ID:???
elsif使う時とか?
988nobodyさん:03/11/26 20:05 ID:???
「!」だけで文の意味全部が否定されるから結構危険なものだと思っテル。
なのーで、
if ( !$hoge ) よりは
unless ( $hoge )
989nobodyさん:03/11/26 20:07 ID:???
if ( $a == 1 or $a == 2 or ... or $a == 49 or $a == 50 )
これを簡単にしたいのですが、何かいい方法はありますか?
990nobodyさん:03/11/26 20:09 ID:???
if(1 <= $a && $a <= 50 && $a !~ /\D/)
991nobodyさん:03/11/26 20:16 ID:???
>>987
my $foo = 2;
unless ($foo == 2) { print 'unless' }
elsif ($foo == 2) { print 'elsif' }
else { print 'else' }
992nobodyさん:03/11/26 20:17 ID:???
うほっ、使えるのか……
993nobodyさん:03/11/26 20:30 ID:???
Perl コーディング初心者質問コーナー Part30
http://pc2.2ch.net/test/read.cgi/php/1069846177/l50
994989:03/11/26 20:33 ID:???
>>990
あ、、、そうでした!
ありがとうございます!
995nobodyさん:03/11/26 22:46 ID:???
/\bA\b/
入力する文字列にA以外に何が含まれていてもいいけど,
Aが入ってないと駄目って書き方あります?
996nobodyさん:03/11/26 22:55 ID:???
/A/
997nobodyさん:03/11/26 23:09 ID:???
>>989
if(a/50 <= 1 && a != 0)
998nobodyさん:03/11/26 23:13 ID:???
>997
$が抜けてるがC使いの方ですか?
あと、そのやり方だと、-20や10.8も入ってしまいますよ?
999nobodyさん:03/11/27 00:09 ID:???
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";
}
}

こんな感じじゃない?
というか、値が整数かどうかは必要に応じて別でチェックすべきだと思う。
1000nobodyさん:03/11/27 00:13 ID:???
>999
>989や>990より難しくなってるだろ

1000get
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。