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

Perlコーディング初心者質問スレ Part 43

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/08/12(金) 01:26:47ID:mHnZWvqz
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0740nobodyさん2005/10/04(火) 20:51:20ID:???
>>734
エディターで使用してるフォントと結果表示のフォントが違うんじゃない?
同じ文字コードでも後者のフォントには含まれてない文字だとか。
0741nobodyさん2005/10/04(火) 21:16:41ID:???
>>740
Jcode::convertにかける前と後で表示させていて、かける前のは
ちゃんと表示されてるというんだからそれは違うんじゃないかと。

print qq(${char}\n);

のかわりに、

print unpack('H*', $char), "\n";

にして文字コード表示させるとなにかヒントがつかめるかもしれず。

ちなみにうちの環境ではどちらも普通に丸1が表示されてコードは
ada1だった。
0742nobodyさん2005/10/04(火) 21:27:51ID:???
Jcodeは5.8.x以降Encodeのラッパーとして動くとかあるから、
PerlバージョンとJcodeのバージョンによって動作が違うと考えられるけど。
0743nobodyさん2005/10/04(火) 21:47:32ID:???
ああ、そういえば Encode の日本語変換はかなりのヘタレだ。
0744nobodyさん2005/10/04(火) 22:10:19ID:???
なんかヘンだ。
print qq(${char}\n);
は
print $char . "\n";
とか
print "$char\n";
にならんのか?

いや、オフトピだけどさぁw
0745nobodyさん2005/10/04(火) 22:16:13ID:???
俺なら
print $char, "\n";
かな
0746nobodyさん2005/10/04(火) 22:19:58ID:???
>>745
俺も。 なんとなく効率よさそう
0747nobodyさん2005/10/05(水) 01:00:16ID:???
Win2K環境でhoge.txtを作ってから、

open (FH, "<hoge.txt");
print FH "�I";
close FH;

これを実行してエディタで開くと、文字コードがEUCになってしまう
0748nobodyさん2005/10/05(水) 02:26:59ID:???
>747
ここは独り言書き込みスレじゃねえ
0749nobodyさん2005/10/05(水) 03:23:07ID:???
ハッシュのキーにHTMLタグ等を入れる予定なのですが、
キーに指定不可能な文字列というものはあるものなの
でしょうか。

ご教示いただけますと幸いです。
0750nobodyさん2005/10/05(水) 07:42:46ID:???
>>747
文字コードが被ってるだけ。エディタの問題。

>>749
文字列で表すことができれば、なんでもOK。
07517342005/10/05(水) 12:48:09ID:???
>>741

コード出力試したんですが、
見事に
(1) → ada1
? → 3f
でしたw

3fってもろに ? のコードなんだよなぁ…
となるとJcodeの変換テーブルに無い文字は
全部 ? に変換しちゃってるとしか考えようが…

ちなみに Jcode.pm のバージョンは 2.3 でした。
一応現在の最新版を入れたんだけど…



>>742, 743

それは痛い…
まだまだJcode使わざるをえないようですね



>>744, 745, 746

大抵 print するときはPerl変数と通常の文字列が混ざるんで、
qq() でくくって ${} で変数を切り分ける癖が付いてるみたいです。
逆に , や . で結合する方が気持ち悪いと感じてる…
(もちろん、単純な文字列の場合はその限りじゃないですが)

0752nobodyさん2005/10/05(水) 13:03:38ID:???
>>751
qq() と . は、文字列結合があるからなぁ。
, ならIOにそのまま渡るだけだけど。
0753nobodyさん2005/10/05(水) 13:51:44ID:???
>>751
たぶん勘違いしてると思うのだが、新しめのJcode.pmはperl5.8以降と
組み合わせるとコード変換部分をPerlがもともと備えている機構を
使うようになるので、
07547512005/10/05(水) 13:58:42ID:???
>>752

可読性を重視してました…
速度的にはそのとおりですね

>>753

×Jcode
○jcode(.pl)
でした。。
0755nobodyさん2005/10/05(水) 14:06:45ID:???
Debianのunstableで試してみたんだが、パッケージでインストールしたperl5.8.7
とJcode.pmのHPから落としてきた2.03との組み合わせでで確かに'?'になった。
unstableでJcode.pmのパッケージはいまだに0.88なのはその辺を嫌ってるの
かもしれんな。

0756nobodyさん2005/10/05(水) 14:10:46ID:???
>>754
いや jcode.pl は utf-8 ⇔ euc-jp はできんぞ。
07577542005/10/05(水) 14:14:34ID:???
>>756
ソースも出力もEUCなので、UTFからの変換は行ってないです。
(すんません、なんか本題とずれちゃってる…)
0758nobodyさん2005/10/05(水) 15:40:19ID:???
>>750
ありがとうございます。
キーボードで入力できる文字全てが対象なんですね。
良かったです。
0759nobodyさん2005/10/05(水) 16:29:09ID:???
いっそ、jcode.plにするとか
0760nobodyさん2005/10/05(水) 16:35:30ID:???
つか euc ⇔ euc なら変換する必要ないじゃんか。
いきなり convert じゃなくて、getcode で文字コード取得してから自分で判別してやれば「いいじゃない
0761nobodyさん2005/10/05(水) 17:13:12ID:???
>>734 を読んで思ったこと。

>---------- ソース(EUC) ----------
>use Jcode;
ソースはEUCとのことだが、use encoding を宣言していないため、
Perl はこのソースをUTF-8だと認識すると思われ。

>$char = '(1)'; # 機種依存文字の丸1だと思ってください。
$charには、「『丸1』のEUCコード」が入る。但し、PerlはこれをUTF-8の
文字コードだと認識する。

>print qq(${char}\n);
PerlがUTF-8の文字コードだと認識している「『丸1』のEUCコード」が出力される
ため、出力結果は見かけ上は正常に見える。

>Jcode::convert( \$char, 'euc' );
これは、「『丸1』のEUCコード」をUTF-8の文字コードだとして、対応する
EUCコードを返せ、ということになるが、そんなものが無いために「?」が
返されるのではないだろうか。
0762nobodyさん2005/10/05(水) 17:35:41ID:???
>>761
use utf8してないからそんなこたないと思うが。
0763nobodyさん2005/10/05(水) 18:06:34ID:???
use Encode qw(from_to);

euc2euc("\xad\xa1");
euc2euc("\xdb\xd9");
exit;

sub euc2euc
{
my $char = shift;
from_to($char, 'euc-jp', 'euc-jp');
print ((map{ unpack('H2', $_) } split(//, $char)), "\n");
}

これを動かしてみれば分かると思う。
結局、○に1とかの文字を渡さないのがいいかと。
0764nobodyさん2005/10/05(水) 19:43:50ID:???
>>763

なるほど。
ということはEncodeを使うコード変換(Perl5.8以上のJcode含む)に
機種依存文字を渡してはいけないってことですね。
※5.8以下のJcodeとjcode.plは不明

うーん、、機種依存文字の判定はしんどいなぁ…
0765nobodyさん2005/10/05(水) 21:14:51ID:???
>>764
CPANにあるEncode::JIS2K使うとか。詳しくはわかんないけど
試した感じでは丸付き数字ぐらいならなんとかなるっぽいよ。
0766nobodyさん2005/10/05(水) 21:36:18ID:???
すいません。ご指導おねがいいたします。
クイズのプログラムを作っているのですが、csvへの書き込みが思うようにいきません。。
↓とりあえず現状はこうなっています。
ttp://s1.muryo-de.etowns.net/~testjoy/

このまま回答を送信すると

項目1 項目2 項目3
総問題数 回答番号 正解番号
総問題数 回答番号 正解番号
・   ・   ・
・   ・   ・

と書き込まれるのですが、これを

項目1 項目2 項目3
Q1(問題番号) Q1の回答番号 Q1の正解番号
Q2(問題番号) Q2の回答番号 Q2の正解番号
Q3(問題番号) Q3の回答番号 Q3の正解番号
・   ・   ・
・   ・   ・

という形に修正したいです。ここまでやってどうしてもうまくいきません。。。
どなたかお助けお願い申し上げます。
07677662005/10/05(水) 21:37:30ID:???
おかしいとこのソースは

foreach (@question) {
($rank_data) = split(/\t/);

open(CSV , ">> file.csv");
flock(CSV,2);
@logs2=<CSV>;
$rank_data="$key,$val,$aval\n";
push(@logs2,$rank_data);
print CSV @logs2;
flock(CSV,8);
close(CSV);
}

です。お願い申し上げます。。
0768nobodyさん2005/10/05(水) 21:42:47ID:???
>>767
問題が再現する最小のサンプルコードを載せるべし。
0769762005/10/05(水) 21:52:03ID:???
>>768
こんな具合でございます。。

# 質問の取得

&ReadParse;

if(open(IFILE,"question_1.tsv")) {
while(<IFILE>) {
chomp();
push(@question,$_);
}
close(IFILE);
07707672005/10/05(水) 21:54:07ID:???
# 質問の表示

my($qnum) = 0;
foreach (@question) {
($qval,$aval,@column) = split(/\t/);
next if($qval eq "");

$qnum++;
$key = "Q".$qnum;

【問題$qnum】$qval

!;

$anum = 0;
foreach (@column) {
next if(!$_);
$anum++;
print qq!<BR>\n!;
print qq!<INPUT TYPE="radio" NAME="$key" VALUE="$anum">$_\n!;
}
07717672005/10/05(水) 21:58:19ID:???
# 回答の表示

my($qnum) = 0;
foreach (@question) {
($qval,$aval,@column) = split(/\t/);
next if($qval eq "");

$qnum++;
$key = "Q".$qnum;
$val = $in{$key};
if($val eq $aval) {
$check = "○";
} else {
$check = "×";
}

$anum = 0;
$answer[$anum] = " ";
foreach (@column) {
next if(!$_);
$anum++;
$answer[$anum] = $_;
}
0772nobodyさん2005/10/05(水) 22:30:09ID:Y4Xwvx08
質問させてください。
最近サイトの荒しが多くて、IPとホストのドメインを取得しようとしています。
$ENV{'REMOTE_ADDR'}
$ENV{'REMOTE_HOST'}
で情報を得ようとしているのですが、REMOTE_ADDRの方は値が入っているのに、
REMOTE_HOSTの方は何も入っていません。ローカル起動ではないのですがなぜ
でしょうか?プロバイダの違う複数の端末からもためしてみたのですが、入っ
ていませんでした。
よろしくお願いします。
0773nobodyさん2005/10/05(水) 22:45:29ID:???
>>772
つながってきた相手のIPアドレスは必ずわかるけど、
ホスト名はIPアドレスからDNSで逆引きしないと
出ないので、出そうとするとその分鯖の負荷になる。
なので、特に共用の鯖では逆引きしない設定にして
あることが多い。多分それじゃないかと。

0774nobodyさん2005/10/05(水) 23:15:07ID:???
つまりこっちで関数使って逆引きすればいいってことね。
0775nobodyさん2005/10/06(木) 03:58:29ID:???
げっとほすとばいあどれす
0776nobodyさん2005/10/06(木) 11:31:35ID:???
>>764
> 機種依存文字
Shift_JIS だけど、
どこかに

/([\x85-\x87][\x40-\xff]|\x88[\x40-\x9e]|[\xeb-\xfc][\x40-\xff])/;
って書いてあった。
0777nobodyさん2005/10/06(木) 11:54:16ID:???
>>767
foreach (@question) のループの中で、$key, $val, $aval
が全く変更されていない。従って、$rank_dataは常に同一の
文字列になる。もしかすると、
($rank_data) = split(/\t/); を、
($key,$val,$aval) = split(/\t/);
にすれば、望んだ結果が得られるかもしれない。
0778nobodyさん2005/10/06(木) 13:20:28ID:Zoab/OuC
$db = PP->db;

$st = $db->prepare("$C{sqlbase} and ch=? and subch!='notice' and pubtime > now() - '1 day'::interval order by pubtime desc");

すいません、↑この一文は何をしているんでしょうか?
perlの文章の中に出てきたのですが、これはSQLの文の一部なんでしょうか
0779nobodyさん2005/10/06(木) 20:10:40ID:???
>>778
PPクラスのdbメソッドの返値が代入されている$dbに対して
prepareメソッドを一つの引数とともに呼び、その返値を$stに代入してる。
引数は普通の文字列で、$C{sqlbase}が変数展開される。

SQL文の一部かどうかはそのプログラムを書いた人じゃないので知らん。
07807782005/10/06(木) 21:47:25ID:Zoab/OuC
ありがとうございます。かなり参考になりました。そのアドバイスを参考になんとか解析できそうです
0781nobodyさん2005/10/07(金) 04:33:20ID:7A4FQYqd
http://hogehoge.co.jp/cgi-bin/hoge.cgi
でname=valueというクッキーを発行して
http://foo.jp/に渡したいんです。

domain="http://foo.jp/";
path="/";
name="value";

というクッキーを作ったんですが受け取ってもらえませんでした。
どうすればいいんでしょうか。
0782nobodyさん2005/10/07(金) 07:25:00ID:???
URLじゃなくてドメイン名なんだからfoo.jpじゃないと。
ただし、ピリオドが2つ以上含まれないといけないらしいが・・・
0783nobodyさん2005/10/07(金) 10:32:33ID:???
>>778-779
そもそも
$db->prepare()
 ↑が何なのか分からん
0784nobodyさん2005/10/07(金) 11:40:23ID:???
>>781
domain属性がドメイン名でないという782の指摘は正しいが、
ドメイン名foo.jpに直したとしても、クッキーを発行するホストの
ホスト名hogehoge.co.jpがドメイン一致しないので、拒否される
んじゃないだろうか。実際とは変えてあるのだろうからなんとも
言えんが。

RFC2965の「3.3.2クッキーの拒否」
ttp://www.studyinghttp.net/cgi-bin/rfc.cgi?2965
0785nobodyさん2005/10/07(金) 11:54:42ID:???
IE の インターネットオプション → プライバシー → 詳細設定 に 「サードパーティの Cookie」 ってあるから、拒否されるかどうかはそこで決まるんじゃないかな。
0786nobodyさん2005/10/07(金) 12:11:20ID:???
>>783
$dbはPPクラスのオブジェクトじゃないの?
推測だけど。

>>781
他所のCookieを読み込みたいのですが
http://pc8.2ch.net/test/read.cgi/php/997686085/

ほんと、古いスレがあるよなぁ。

>>785
それは、コンテンツに第三者のコンテンツを埋め込んで、
そこでクッキーを発行する方法っしょ。
0787nobodyさん2005/10/07(金) 12:23:51ID:???
>>783
オレの推測ではDBIのデータベースハンドルじゃないかなー。


0788nobodyさん2005/10/08(土) 11:15:59ID:???
答はNoだ
0789nobodyさん2005/10/08(土) 18:30:12ID:???
>>783
これは本当のこと言ったらいかんの? >>786-788の流れは…。
0790nobodyさん2005/10/09(日) 12:58:13ID:???
こんなスクリプト書いて redir.cgi ってファイル名つけて実検してるんですけど、
500 エラーになります。試しに nph-redir.cgi という名前にすると 503 になります。
使ってるのは、apache2 です。よろしくおねがいします。
my $x = CGI->new();
print $x->redirect(
-location => $url,
-status => 301,
);

07917902005/10/09(日) 13:04:30ID:???
suexec のせいで 500 くらってますた。すんません。
0792nobodyさん2005/10/09(日) 20:13:06ID:20mFB5Hk
初歩的な質問ですが、正規表現で、最後にsをつけるのとつけないのとの違いがわかりません。
mは各行ごとに^や$が使えるようになるみたいですが。
どなたかおしえてください。
0793nobodyさん2005/10/09(日) 20:25:55ID:???
与えられた文字列を一行として扱う。.が改行にマッチする。
http://search.cpan.org/dist/perl/pod/perlre.pod
0794nobodyさん2005/10/09(日) 20:32:38ID:???
sオプションを使うことは稀ですから、sオプションがあるのを知っている時点で
その説明を読んでいる可能性が高いのではないでしょうか。

マニュアルページを読むだけで、解決する質問がかなり多いような気がします。
ぐぐるだけではなく、手元のマニュアルページも調べてみましょう。
0795nobodyさん2005/10/09(日) 20:38:17ID:???
まあ後はトライだな。
0796nobodyさん2005/10/09(日) 22:47:29ID:???
ハッシュのキーを正規表現で指定することは可能でしょうか
0797nobodyさん2005/10/09(日) 22:51:07ID:???
>>796
アルゴリズム上、無理です。
0798nobodyさん2005/10/09(日) 22:56:16ID:???
あ、tie して、そういうハッシュを作れば可能かな。面倒だけど
0799ヽ(´ー`)ノ ◆.ogCuANUcE 2005/10/09(日) 22:56:57ID:???
>>796
Tie Hash Reg で CPAN Search
0800nobodyさん2005/10/10(月) 00:05:51ID:???
>>796の質問の意味がわからん。
キーを正規表現で取り出すのとはちがうのか?
0801nobodyさん2005/10/10(月) 00:11:38ID:???
キーに対して値は1つ、
で正規表現で複数マッチしたら何を取り出すつもりだ
0802nobodyさん2005/10/10(月) 00:12:41ID:???
>>800
正規表現でキーを表現したいということでしょ。

$hash{/^ab/} = 3;
とか。

実際には tie して
$hash->{'^ab'} = 3;
みたいになるんだろうけど
0803nobodyさん2005/10/10(月) 00:14:08ID:???
>>801
複数マッチしたら、配列で返ってくるとかじゃないかな?たぶん
0804nobodyさん2005/10/10(月) 00:22:16ID:???
grepじゃできないようなことなのだろうか。
0805nobodyさん2005/10/10(月) 00:23:35ID:???
ハッシュ引くだけなら grep で出来そうだね
0806nobodyさん2005/10/10(月) 00:35:51ID:???
>>803
マジでーーー知らなかったスマソ
0807nobodyさん2005/10/10(月) 01:54:54ID:???
>>802
> 正規表現でキーを表現したい
それだけなら tie なんざせんでも。

my $str = 'abcabcdefdefabcdefabef';
my %hash;
$hash{$_} = [ $str =~ /($_)/g ] for (
  qr/^abc/,
  qr/ab./,
  qr/.fd.*?f/,
  qr/\d/,
);
print "$_ : ", join(', ', @{$hash{$_}}), "\n" for sort keys %hash;

正規表現にマッチするキーが持つ値を

@values = $hash{ qr/^abc/ };

のように取り出したいというのなら、ラッパーを
探すなり書くなり、という話になると思うが。
0808nobodyさん2005/10/10(月) 03:48:24ID:???
>>796
単純に

print grep { /$regex/ } keys %hash;

でOK。
0809nobodyさん2005/10/10(月) 03:50:32ID:???
マッチするキーの値を求めたいなら

print map { $hash{$_} } grep { /$regex/ } keys %hash;
0810nobodyさん2005/10/10(月) 09:58:24ID:???
@hash{grep /$regex/, keys %hash }
0811nobodyさん2005/10/10(月) 11:52:25ID:gKZw7BFl
質問させて下さい。

見よう見まねで以下のようにgethostbyaddrを使ってみたのですが
$addr = $ENV{'REMOTE_ADDR'};
$wkaddr = pack('C4', $addr);
use Socket;
$host = gethostbyaddr($wkaddr, AF_INET);

結果にYahooBB〜.bbtec.netってのが返ってきました。
使い方はこれであってるんでしょうか?
0812nobodyさん2005/10/10(月) 12:56:52ID:???
是が非でもマニュアルは読みたくないと、そうおっしゃるか。
0813nobodyさん2005/10/10(月) 13:53:46ID:???
>>811
つかおまいはどういう結果を期待してgethostbyaddrを使ったんだ
0814nobodyさん2005/10/10(月) 13:58:02ID:???
見よう見まねって・・
08158112005/10/10(月) 16:13:54ID:gKZw7BFl
gethostbyaddrの結果がYahooBBだけは入っているのですが、それ以外のプロバイダは空に
なっています。どうしてでしょうか?
お願いします。
0816nobodyさん2005/10/10(月) 16:18:09ID:???
どうなるのか分からない関数を
何が欲しいのか分からない状態で使って
結果が正しいのかどうかも分からないって…
それは質問なのか?
0817nobodyさんNGNG
とりあえず pack('C4', split(/\./, $addr)) だろ。
0818nobodyさん2005/10/10(月) 22:40:59ID:???
今Perlでプログラム組んでいてほぼ完全に動作しているのですが、原因が分からないのですが何かの切っ掛けでこの部分がたまにエラーを吐いてきます。

129 : foreach(keys %an){
130 :  $data = sprintf("%08d\t$_",$an{$_});
131 :  push(@count,$data);
132 : }

エラー内容は
Modification of a read-only value attempted at test.cgi line 130.
なのですが、このエラーの修正方法が分かりません。
このスレでいいのかちょっと謎ですが宜しくお願いします。
0819nobodyさん2005/10/10(月) 22:55:19ID:???
>>818
分からないエラーが出たときには、そのエラーメッセージでぐぐると良いですよ。
$dataが定数になっていたり、その行の変数、どれか tieしてませんか?
0820nobodyさん2005/10/10(月) 23:44:14ID:j4NUbQ7s
質問です。。
学校の宿題なんですが・・・初歩の初歩で質問するのもはずかしー問題かもしれません・・・
Hex number を入力してそのNumberをDecに変換し、さらにoctal number を decimal にするプログラムを作れ。
っていう問題です。
一応自分で書いたのは・・

#!/perl
use warnings;
use strict;
print "Hexadecimal and Octal number converter\n\n Please enter the Hexadecimal number:";
my $hex = <STDIN>;
print $hex,;

とりあえず、Hex→Decの変換をやってみようと思ってここまで書きました。
これだと、例えば、0xFFっていれても255って返ってこずにそのまま、0xFFって出ちゃうんですよね・・・
神様助けて・・・
0821nobodyさん2005/10/10(月) 23:52:05ID:???
>>820
つttp://www.site-cooler.com/cgi-bin/kansuu.cgi?lang=perl
0822nobodyさん2005/10/10(月) 23:52:46ID:???
>>820
それさ、そこに書いてある部分が問題文、
というか「これを拡張して書け」みたいな感じなんじゃない?

変換しろって言うんだから、変換しなよ。簡単だぞ。
がんばれよ。
08238202005/10/11(火) 00:01:28ID:ydWxrZ97
>>821,822 さんレスありがとうございます。
んー。。
変換する式みたいなもんがあるんでしょうか?
print 0xFF,;
って書くと勝手にPerlが普通の数字に変換してくれますが、内部でどのように変換してるんでしょか?
なんか、三角形の面積を求める公式みたいな計算式があればできるっぽいんですけど。。
もう一度一から教科書読み直して勉強してみます・・・。
0824nobodyさん2005/10/11(火) 00:02:58ID:???
先生としては、きちんと基数変換のコードを
書いてもらいたいんだろうなぁ。
0825nobodyさん2005/10/11(火) 00:09:26ID:???
>>824
それひどくねー?
08268202005/10/11(火) 00:22:37ID:m+2zbTP9
えー。途中経過です・・

#!/perl
#ex2.plx
use warnings;
use strict;
print "Hexadecimal and Octal number converter\n\n Please enter the Hexadecimal number:";
my $hex = <STDIN>;
print hex $hex,;

としたら、0xFF→255
となって変換できたんですけど・・こんなエラーが↓

Illegal hexadecimal digit'
' ignored at ex2.plx line7, <STDIN> line 1.
255

このエラーの最後に255って出たんですけど。。このエラーは無視したら怒られますか??
ま、いっか。おし、次はOctal!
0827nobodyさん2005/10/11(火) 00:28:56ID:???
ヒント:$hexの中にはあれも入って…
う〜ん。怒られないと思うけど、初歩的な悪い例として取り上げられるかもw
0828nobodyさん2005/10/11(火) 00:39:23ID:???
<STDIN>使うなら、chompも書いておいた方がいいかと
08298202005/10/11(火) 00:44:24ID:m+2zbTP9
hex と同じように octal も

#!/perl
#ex2.plx
use warnings;
use strict;
print "Hexadecimal and Octal number converter\n\n Please enter the Hexadecimal number:";
my $hex = <STDIN>;
print hex $hex,;
print "\n Please enter the Octal number:";
my $oct = <STDIN>;
print oct #oct,;

って感じに書いたら、、、
Use of uninitialized value in oct at ex2.plx line 10, <STDIN> line 2.
0

ってなって数字が0に!!

うーん。初歩的な悪い例ですか・・・$hex の中になにか良くないものが入ってるっぽいんですね・・・。
しかし、なんでOctalの場合だと0に・・・

もうちょいがむばってみます・・・
08308272005/10/11(火) 00:44:30ID:???
>>828
そうなんだけど、宿題だからヒントで止めておいたw
しっかし、まだあこで引っかかりそうだな。
08318272005/10/11(火) 01:01:39ID:???
>>828ででちゃたんで書きますけど…
>>826のソースでエラーがでるのは$hexにchomp関数を使用していないからです。
$hexの中には0xFF\nと入ってます。その\nを取り除くためにchomp関数を使います。

chomp関数とはなんぞや?
ttp://www.site-cooler.com/cgi-bin/kansuu.cgi?lang=perl&method=chomp

>>829についてはEasy mistake

それでは、おやすみなさい。
0832nobodyさん2005/10/11(火) 01:12:14ID:???
も− print eval(<STDIN>); でいいんでない? 点数もらえないだろうけど。
0833nobodyさん2005/10/11(火) 01:12:39ID:???
>chomp関数とはなんぞや?
いや、お前よりかはみんな知ってると思うが・・・^^;
08348272005/10/11(火) 01:22:05ID:???
>>833
馬鹿め!>>820宛に書いた文章だぞ。俺だってchompぐらい知ってる。

chomp関数とはなんぞや?(その下の行に簡単にわかるリンク先)
ttp://www.site-cooler.com/cgi-bin/kansuu.cgi?lang=perl&method=chomp

俺ってなんて優しいんだw
0835nobodyさん2005/10/11(火) 01:26:50ID:???
その前に誰か >>829 に
× print oct #oct,;
〇 print oct $oct;
って教えてやれよw
08368272005/10/11(火) 01:32:09ID:???
>>835
はっきりとは教えないようにしてたんだよ。
宿題だし、本人はやる気あるみたいだからな。
0837nobodyさん2005/10/11(火) 01:45:08ID:???
メモ帳で書いてるんかね。
テキストエディタだったらすぐ気づきそうな。
0838nobodyさん2005/10/11(火) 02:14:26ID:???
きっとvi使ってるんだろう
0839nobodyさん2005/10/11(火) 10:24:06ID:4r4FVZwb
#!/usr/bin/perl
$kexp= 200;
$pexp= 676;
$bexp= 267;
$kexp= $a;
$pexp= $b;
$bexp= $c;
$a + $b + $c= $d;
print $d;

何がいけないのかな?
■ このスレッドは過去ログ倉庫に格納されています