トップページ⇒php
984コメント309KB

【Perl】初心者コーナーPart11

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/03/27 12:53ID:wAXxxOxP
 
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

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

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
CGIの質問はこちら【CGIだけどなんか質問ある Pert 5.01 】
http://pc.2ch.net/test/read.cgi/php/1015127347/l50
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/

過去ログ、その他の役立ち情報は>>2-10を見よう。
00565202/03/28 23:37ID:???
>54
ActivePerlの標準インストールベースで動かないといけないので
困ってます
再帰処理で標準出力に吐いているデータを加工するためにバッファ
に貯め込みたいんですが、再帰部分に手を入れたくないんですよ
0057nobodyさん02/03/28 23:43ID:7pPJ3EHV
@a = (1, 2, 3, 4, 5);
@b = (5, 4, 3, 2, 1);
@c = reverse @b;

if ( @a == @c ) {
print "equal\n";
} else {
print "not equal\n";
}

if ( @a == (reverse @b)) {
print "equal\n";
} else {
print "not equal\n";
}

の実行結果が

equal
not equal

になるのはなぜですか?
0058nobodyさん02/03/28 23:58ID:???
>>55
IO::Scslarハックして、標準インストールでも動くようにする。
0059nobodyさん02/03/29 00:01ID:???
ppmでIO-stringyをインストールする事すら出来ないのか。
0060nobodyさん02/03/29 00:03ID:???
>>56
1 ppmでインストールさせる。
1.5 IO::Scalarは一緒に配る。
2 perltie見ながらFILEHANDLEにtie出来るクラス作る。
3 再帰部分に手を入れる。
0061nobodyさん02/03/29 00:14ID:???
パッケージが限られるのならオーバーライドするって手も無くはないな。
00625202/03/29 00:17ID:???
>58-61
うーん、やっぱそうですか
相手が素人さんなのでインストールさせられないんです
中見てみます(ショボーン
・・・作るか
0063nobodyさん02/03/29 00:41ID:???
>>57
実際に評価されているのはスカラーだよ.

my @a = (1, 2, 3, 4, 5);
my @b = (5, 4, 3, 2, 1);
my @c = reverse @b;

my $a = @a;
my $b = @b;
my $c1 = @c;
my $c2 = reverse @b;

print join "\n", $a, $b, $c1, $c2;
00645702/03/29 01:22ID:???
>>63
ああ、そうなんですか。
じゃあ、
@a == reverse @b
の部分でリストコンテキストでreverse @bを評価するってのは
できないということですか?
無理やりスカラーにするintってのがあるかと思いますが
その逆とか・・。
0065始めて約一ヶ月02/03/29 01:44ID:XyE2iK+m
for($i=1;$i<=$5;$i++){
<input type=text name=$i size=10 value=$value$i>
}
この「value」の所の書き方がわかんないです。
教えてくんさい。
0066nobodyさん02/03/29 01:47ID:???
57のコード
equal
not equal
にはならねぇだよ?
0067nobodyさん02/03/29 02:10ID:???
for($i=1;$i<=$5;$i++){
print "<input type=text name=$i size=10 value=$value$i>";
}
こういう意味か?
00685202/03/29 02:16ID:???
結局、IO::Scalarを送って解決しました
うう、ヘタレじゃぁ
0069始めて約一ヶ月02/03/29 02:27ID:XyE2iK+m
>67
ごめんなさい書き方が悪かったっす、
$value = tsukue;
for($i=1;$i<=$5;$i++){
print "<input type=text name=$i size=10 value=$value$i>";}
のなかで「$value$i」を使った時に「$value$i」が「tsukue1」と認識されないで
「tsukue」と「1」に認識されちゃうんです。
なにか良い書き方はありますか?
0070nobodyさん02/03/29 02:54ID:???
>>69
どういう出力結果を得たいのか、例を実際書いてくれ。
0071nobodyさん02/03/29 03:38ID:???
>64
できないと思う.そもそも==でリストコンテキストはあり得ないんじゃないかと.
とりあえずperlfaq4にも書いてあるけど,配列の比較は面倒な方法を取らないとだめだよ.
あと,無理やりスカラーにするのはscalar.intは整数化.

my @a = qw(1 2 3 4 5);
my @b = qw(5 4 3 2 1);

sub arycmp (\@@) {
    my ($a, @b) = @_;
    @$a == @b or return;
    my $n = @b;
    $a->[$n] eq $b[$n] or return while $n--;
    return 1;
}

print (arycmp(@a, reverse @b) ? "equal\n" : "not equal\n");
0072始めて約一ヶ月02/03/29 04:20ID:XyE2iK+m
>70
ごめんなさいさらに書き方が悪かったっす、
$value1 = いちばん;
$value2 = にばん;
$value3 = さんばん;
$value4 = よんばん;
$value5 = ごばん;
print "<form action=XXX.cgi>";
for($i=1;$i<=$5;$i++){
print "項目$i<input type=text name=$i size=10 value=$value$i>";}
print "<input type=submit value=更新>";
のなかの「$value$i」を「$value1」〜「$value5」と認識させて、
フォームの「項目1〜5」のテキストスペースにそれぞれ
「いちばん、にばん、さんばん、よんばん、ごばん」と表示させたいのです。
すいません説明の仕方が下手で。
よろしくお願いします。
0073自動ツッコミプログラムV0.0102/03/29 04:29ID:???
>>72
配列使えば?
0074M02/03/29 06:31ID:xslHK9Si
リンク先をフォルダに指定して,そのフォルダ内の特定のファイルを開く
ようにするには,ファイル名を何にすればよいのでしょうか。
0075nobodyさん02/03/29 07:49ID:???
>>74
読めば読むほど味わいの増す、素晴らしい質問だと思います。
0076nobodyさん02/03/29 07:53ID:???
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。
0077nobodyさん02/03/29 09:37ID:???
$value1 = いちばん;
$value2 = にばん;
$value3 = さんばん;
$value4 = よんばん;
$value5 = ごばん;
print "<form action=XXX.cgi>";
for($i=1;$i<=$5;$i++){

cgiに書かれている言語なんていうのですか?教えてください
0078nobodyさん02/03/29 09:38ID:???
スプリクトとCGIと意味が違うのですか?
0079nobodyさん02/03/29 09:46ID:???
78は神!
0080nobodyさん02/03/29 09:50ID:???
>72
${"value$i"}
これでいいか?
わかったら帰って宿題やれ。
>73の言うように配列使った方が利口だと思うけどな。
0081nobodyさん02/03/29 10:29ID:???
>>76はここで、質問するレベルに達していないと思われ。
本読む、初心者向けのサイト見るなどして、レベルアップしてから来い。
ここは一から手取り足取り教えてくれる無料教室じゃないって事だ。
00828102/03/29 10:31ID:???
誤爆スマソ >>77だ
0083nobodyさん02/03/29 10:42ID:???
>>72
$value1 = いちばん;
↑ これは ↓ こうしてみる。
$value1 = 'いちばん';

for($i=1;$i<=$5;$i++){
↑ これは ↓ こうしてみる。
for($i=1;$i<=5;$i++){

print "項目$i<input type=text name=$i size=10 value=$value$i>";
↑ これは ↓ こうしてみる。
print qq|項目$i<input type="text" name="$i" size="10" value="|, ${'value'.$i}, '">';

たぶんね。
0084nobodyさん02/03/29 13:51ID:GD6wTrbP
いっぺんに複数行コメントするとき
どうすんだ?
Cの
/* */
みたいのないの?
0085nobodyさん02/03/29 13:58ID:???
>84
全ての行に#を付けて書く。
0086nobodyさん02/03/29 13:58ID:???
>>84
こんなのもある。

=foo
いっぺんに複数行コメントするとき
どうすんだ?
Cの
/* */
みたいのないの?
=cut

=英字
から
=cut
まで
0087nobodyさん02/03/29 13:59ID:???
>84
要するに、ない。
どうしてもと言うのなら、使わない変数にヒアドキュメント代入する手もあるけど、メモリの無駄だな。
008885=8702/03/29 14:00ID:???
>86
知らなかった。
スマソ。
00898602/03/29 14:04ID:???
>>85=87
いや、でもこれは厳密にはコメントじゃないから。

#をつかうとコンパイル時に完全に無視するけど
=は違う、みたいな話があったようななかったような…
0090nobodyさん02/03/29 14:13ID:GD6wTrbP
ありがと、勉強なたぁ〜
0091nobodyさん02/03/29 16:22ID:???
$aaa->{'x'}->{'y'}='z' ;
これを
foreach( %aaa )
{
print "$_" ;
}
みたいなかんじで、次々に引っ張ってきたいんですけど、
可能ですか?、出来れば簡単な例など教えて下さい。
0092nobodyさん02/03/29 16:39ID:???
foreach my $p (keys %{$aaa}){
foreach my $q (keys %{ $aaa->{$p} }){
print "\$aaa->{$p}->{$q} = " . $aaa->{$p}->{$q} ."\n";
}
}
これでいい?
00939102/03/29 16:50ID:???
>>92
すごく、ありがとう〜〜〜
惚れました。
0094nobodyさん02/03/29 18:22ID:???
Data::Dumper使えよ…。
0095nobodyさん02/03/30 12:03ID:1Ui3rht3
2次元配列の初期化するのに、例えば三列二行の二次元配列を
全て0にするには、
$var = 0 ;
@array = (
[ $var , $var , $var ] ,
[ $var , $var , $var ]
) ;
は分かるのですが、列数と行数を与えて初期化
するのはどのようにしたらいいのでしょうか?
$retsu = 5 ;
$gyou = 3 ;
$var = 0 ;
・・・ここから行き詰まってます。
ヒントでもお教え下さいませ。
0096nobodyさん02/03/30 13:19ID:???
いまいちなにしたいのかわからんけど。こういうことがしたいの?
$retsu = 5;
$gyou = 3;
$var = 0;

foreach $row (0 .. $gyou - 1) {
    foreach $col (0 .. $retsu - 1) {
        $array[$row][$col] = $var;
    }
}


0にするだけなら@array = ();でもいい気がするけど。
0097nobodyさん02/04/01 04:59ID:???
アプローダで*.jpgをそのままアプするんじゃなくて
アンカタグでリンクにするのってどうすれば良いですか?
0098nobodyさん02/04/01 06:49ID:???
>97
画像を表示する部分のタグ変更。
0099sato02/04/01 12:58ID:???
CGI内にフォームを書いているんですが、
送信ボタンを押した時に、あるサブルーチンへ飛ばしたい場合は
<form action=>の部分にどのように記述すればいいんでしょうか?
0100nobodyさん02/04/01 13:07ID:???
スクリプト内ではどのようにサブルーチンに飛ばしてますか?
条件があるなら条件を指定して呼び出せば良い。
0101初心者02/04/01 13:07ID:???
100get

>>99
<input type="hidden" name="mode" value="submit">
あとは、$modeとかに値を入れてsubmitなら
フォーム送信された場合のサブルーチンへ飛ばす。
とか。。

でいいんですよね?
0102初心者02/04/01 13:08ID:???
あぅ。100が。。。
0103100!02/04/01 13:10ID:???
やーいやーい
0104sato02/04/01 13:18ID:???
>>101
フォームが送信された場合のサブルーチン、
ってどうやるんですか??
0105nobodyさん02/04/01 13:26ID:???
satoのレベルに合わせて解説できる人はすごいと思う。
みんな頑張ってsatoの難題に挑戦してくれ!
0106sato02/04/01 13:27ID:???
>>105
お願いします。
0107nobodyさん02/04/01 13:36ID:???
で、satoはどんなことをやりたいの?
0108nobodyさん02/04/01 13:45ID:2cwLH473
余所のサイトのHTMLをperlで読み込むにはどうやれば良いのですか?
0109sato02/04/01 13:48ID:???
Aというサブルーチンの処理をさせたいんすけど
それをボタンが押された時に行いたいんです

すなわちtest.cgiの中に

   [追加] [削除]

ボタンがこのようにあるとして、
[追加]を押した時には、サブルーチン sub plus へ。
[削除]を押した時には サブルーチン sub delete へ。

この時<form action=test.cgi method=post>をCGI内に埋め込むと
複数ボタンと複数サブルーチンをどのように処理するのか・・
0110nobodyさん02/04/01 13:55ID:???
サブルーチンという言葉を知ってるくらいだからプログラム経験者だろう。
条件分岐はわかるね。CGI内では条件分岐して処理を場合わけする。
htmlのボタンごとにcgiの処理を分岐するには呼び出す時点で条件を指定する。
具体的には環境変数というのを使って引数を持たせる。>>101の方法。
mode=plusという引数を持ってたら追加モードへ..ってやる。
あとは「環境変数」で検索してくれ。
0111nobodyさん02/04/01 13:55ID:???
<form action=test.cgi method=post>
<input type=hidden name=mode value=plus>
<input type=submit value="追加">
</form>

<form action=test.cgi method=post>
<input type=hidden name=mode value=delete>
<input type=submit value="削除">
</form>

011210802/04/01 15:19ID:wV1XGpKY
HTMLじゃなくても良いんですけど
他のサイトのデータを読むにはどうすれば良いんでしょうか?
i-modeでソースを見たいんですけど。。。
011310802/04/01 15:38ID:???
socket使うのか。。。
勉強しなおしてきまふ。
0114nobodyさん02/04/01 16:46ID:???
質問!
perlってマインスイーパーとかペイントみたいな
アプリケーションって作れるの?
どうなの?おせーて★
0115 ◆Googlexo 02/04/01 16:52ID:???
>114
・・・・・。ネタですか?
0116sato02/04/01 17:01ID:???
>>114
それはJavaの仕事。
0117nobodyさん02/04/01 17:05ID:???
>>114
Perlだから○○はつくれない、ってことはないぞ。
得手不得手はあるにしても。
頑張ればマインスイーパーでもなんでも作れるさ。
0118nobodyさん02/04/01 17:06ID:???
>>114
できますが、何か?
オライリーの『実用Perlプログラミング』にはテトリスの例があがってるよ。
0119nobodyさん02/04/01 17:48ID:???
>>116
Javaなんて大がかりなもの持ち出すまでもない。

http://turedure.s8.xrea.com/yourmine/index.html
0120nobodyさん02/04/02 05:14ID:???
すいません、ファイル内容を全て $_ に入れた後、一行ずつ
スマートに処理をするには、どうすればいいのでしょうか?
一応以下のを考えましたが、m// って遅いしメモリ食うんですよね?

local $_ = '';
while (!eof(STDIN)) { $_ .= STDIN }
&func($_);

sub func {
 local $_ = shift;
 while (m/^(.*?\n)(.*)$/) {
  $_ = $2;
  print $1; # ここら辺にしたい処理を入れる予定
 }
 return 1;
}

他には local @_ = split(/\n/, $_); なども考えましたが、
一瞬だけメモリが二倍要りますし・・・。
あ、サブルーチンには @_ では無く $_ で渡したいのです。
0121nobodyさん02/04/02 06:15ID:???
>>120
local $_ = '';

個人的には「例のあれ」をプログラマが制御するのには賛同しかねる。

0122nobodyさん02/04/02 07:35ID:???
>>120
ファイル全部読み込んでメモリも何も無いと思う。
敢えてやるならwhileとm//gかなあ。

$/ = '';
func(<STDIN>);

sub func {
    local $_ = shift;
    print $1 while /(.*\n)/g;
    # ↑処理
}

まあ、ネタなんだろうけど。
0123nobodyさん02/04/02 10:03ID:???
>120
ネタかな?とも思ったが、一応「初心者スレ」なんで...
どうして変数$_ にファイル内容をすべていれた後に改まって1行ずつ処理をするのかわかりませんが、
結局、メモリをくわないようにファイル処理したいのならば以下のように正攻法でいくのがベターかと。
open(READ, 'filepath');
while (<READ>){
    やりたい処理 if /pattern/;
}

あと、「m// って遅いしメモリ食うんですよね?」とありますが、そんなことはありません。
特に先頭マッチ(m/^pattern/)や後方マッチ(m/pattern$/)は高速だし、1バイト文字に
マッチさせたいのならindex関数を使うほうが高速です。これは結局、処理内容に応じて
最適の処理を模索していくしかないと思いますが、それでもより高速化をもとめるのならば
C的な言語にシフトせざるを得ません。

0124nobodyさん02/04/02 13:32ID:YZpqqRq/
ファイルを何度もopenしていて、
何回かに一回openに失敗してしまうなんて事はあるのですか?
0125nobodyさん02/04/02 13:38ID:vQkiGH9y
どっかで閉じ忘れてるとか?
openとcloseの数は合ってますか?
012612402/04/02 13:52ID:PEBO6o/o
>>125
すいません。open失敗したわけではないのですが
そういう場合てあるのかな〜?と思ったので。
0127Dream ★02/04/02 13:54ID:???
>>124
特殊な場合にはあるよ。
ファイルハンドルに使われるメモリが足りなくなったときとか。
012812402/04/02 14:08ID:PEBO6o/o
>>127
>ファイルハンドルに使われるメモリが足りなくなったときとか。
こういう場合があるんですね。なるほど。
けど、こんなサーバ使ってられん!てレベルの話ですよね?
レスありがとございます。
0129nobodyさん02/04/02 14:09ID:aIwf9lEF
dumperで出力したファイルを、取り込みたいですけど、

ソース中に、
my $ref = {
'a' => 1,
'b' => 2
};

こんな感じで初期できますけど、これを、
ファイルにして、そのファイルから

open ( FILE , "<ファイル" ) ;
my $ref = <FILE> ;
close ( FILE ) ;

こんな感じで取り込みたいんです。
(このソースじゃ駄目でしたけど・・・)

どなたか、ご存知でしたら、ご教授ください。
0130nobodyさん02/04/02 14:11ID:???
>129
require "ファイル";
じゃダメなのか?
013112902/04/02 14:24ID:aIwf9lEF
>>130
なるほど!
盲点でした。
ありがとう御座います。
013212902/04/02 14:27ID:aIwf9lEF
すいません、またお願いします。
無名リストのに名前を付けれたと、記憶しているのですが、
その記述方法を忘れてしまいました。

$VAR1 = {
'x' => 1,
'y' => 2
};
dumperの結果ですが、変数が$VAR1になってしまうのですが、
これを変えたいのです。
以上よろしくお願いいたします。
0133nobodyさん02/04/02 15:26ID:YZpqqRq/
大量の分をprintで出力する場合
print <<"EOF";
〜〜大量〜〜
EOF
で出力すると〜〜大量〜〜の分をまとめてメモリに格納しちゃうんですか?
それとも一行づつ処理して
print "〜〜〜";
print "〜〜〜";
print "〜〜〜";
と同じになるのですか?
0134Dream ★02/04/02 16:05ID:???
>>133
メモリに格納する。メモリが不安なら、
$|=1;
とか使えばいいんじゃなかったかな?
0135☆02/04/02 16:15ID:???
バナーを表示した回数とクリックした回数を
テキストに書き出したいんですが、
バナー複数ある場合テキストの中に
$banner, $bannertitle, $url, $hyoujikaisu, $clickkaisu
という風に書き出したいです。

バナー表示回数とクリック回数を
どのように記述すればいいか是非教えて下さい。
0136nobodyさん02/04/02 16:24ID:???
>>135
そのまんまでいいんじゃない?
まさか、ルーチン書いてくれって事?
0137nobodyさん02/04/02 16:39ID:???
>>132=129
ドキュメントに書いてあることいちいち聞くなよ。Dumper.pm読んでくれんと、コロ助
0138☆02/04/02 16:39ID:???
>.>136
表示回数カウントの方法と、
クリック回数カウントの方法です。
0139nobodyさん02/04/02 17:40ID:BrKRPiRd
>>134
レスありがとうです。
出力をバッファリングしなくなるのでprint文の
実行と同時に出力してくれるようになる。というやつですね。

これでいちいちメモリに格納しないで直接?出力する。イコール

print <<"EOF";
〜〜大量〜〜
EOF

でも

print "〜〜〜";
print "〜〜〜";

でも同じになるのでしょうか?

0140nobodyさん02/04/02 18:24ID:???
sub new
{
my $class = shift ;
my ( $filename ) = @_ ;

print "##### $ARGV[ 0 ]\n" ;

my $self = {} ;
bless $self ;
}

クラスのメソッドから、グローバル?の変数参照すんのどうすんの?
0141nobodyさん02/04/02 18:25ID:???
>>139
効率よく入出力するためのバッファリングなので、あまり気にしすぎない方がいいよ。

手元にある環境で試したけど、標準出力に対し、cygwin版Perlは行バッファリングされていたけど、
ActivePerlはバッファリングされていなかった。
いずれにせよ、STDOUTに対しては完全バッファリングはしてないんちゃうかな?
よくわかんらんけど。
0142nobodyさん02/04/02 18:36ID:???
>140
main::でアクセスすれば? 行儀悪いと言われるだろうがね。
014314002/04/02 18:56ID:???
>>142
すまんけど、その時の記述例をちょろと、お願い。
0144nobodyさん02/04/02 18:57ID:???
$package::var
014514002/04/02 18:58ID:???
>>143
すまそん。
main::$ARGV[ 0 ]
で、できた。
014612902/04/02 19:24ID:aIwf9lEF
無名リストに名前を付ける方法を何方か、ご存知ありませんでしょうか、
記述例など、頂けると助かります。
よろしくお願いします。
0147nobodyさん02/04/02 19:27ID:???
>>146
無名なんだから名前なんてあるわけねーだろ。
014812902/04/02 19:37ID:aIwf9lEF
そうでしたか、

では、Dumperで、無名リストを表示する場合、
名前を付ける方法ご存知の型は、居られませんでしょうか、
よろしくお願いします。

>>147
レスありがとう御座います。
ただ、申し訳ありませんが、今後、私の発言に干渉なさらないよう、
お願い申し上げます。
0149nobodyさん02/04/02 19:43ID:???
>>139
$|=1するしないにかかわらず、
その両者は同じです。
0150nobodyさん02/04/02 19:51ID:???
Dumper.pmの中に書いてあるっていってんだろ、ボケ。
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
015114702/04/02 20:44ID:???
>>148
的外れで意味不明な質問をしておきながらそのデカい態度。
見上げたもんだな。
その厨っぷりに感心したから教えてやろう。

Data::Dumper->new([ ref-list ], [ name-list ]);

e.g.
print Data::Dumper->Dump([ \%HASH ], [ 'HASH' ]);
print Data::Dumper->Dump([ \%HASH ], [ '*HASH' ]);
015212902/04/02 21:19ID:aIwf9lEF
>>150
>>151
レスありがとう御座います。
ただ、申し訳ありませんが、今後、私の発言に干渉なさらないよう、
お願い申し上げます。

引き続き、ご存知の方宜しくお願いします。
0153nobodyさん02/04/02 21:56ID:???
>>152

$Data::Dumper::Varname="manco";
print Dumper($manco) ;
これじゃだめ?

ttp://www.xav.com/perl/lib/Data/Dumper.html
このあたり参考になるかも
015413902/04/02 21:58ID:wv3Og9zk
>>141>>149
ご丁寧にどうもありがとです。
けど、なんか混乱状態に陥ってます。。。
>>139の両者ともサーバへの負担はかわらずという事ですかね?
0155nobodyさん02/04/02 22:20ID:???
コンパイル時にその辺は最適化してるんとちゃうかなぁ。
015612002/04/02 22:36ID:???
こういうのはネタと言われる程常識外れなのですね。
ソース公開したりして無くて・・・というか、ずっと以前に
公開してた事ありましたが、直ぐに中止してよかった (笑

>>121
m// や s/// 等が続いて switch 分作る時に良くやります。
が、玄人さんは使いたがらないらしいですね。
私は初心者ですのであまり理由がわかりませんが。

>>122-123
自分はまだ「どうにかプログラムを書ける」位のレベルですので、
やっと関数・処理の切り分け、流用・設計を考慮し出したトコなのです。
main ではデータの流れだけを担当し、細かい処理は各関数に
任せた結果が例の処理でした。
で、各関数には @ で渡さず $ で統一したかった、という感じ。

やっぱり >>123 のようなのがやり方が一般的ですよね。
そうすると、便利な関数にはなるのですが、酷いと main 一個だけの
プログラムにもなりかねないので・・・もっと精進します。
有難う御座いました。
■ このスレッドは過去ログ倉庫に格納されています