[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/09 22:28 / Filesize : 164 KB / Number-of Response : 561
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlについての質問箱 39箱目



1 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 21:17:36 ]
"The duct tape of the Internet" こと、Perl についての質問箱です。
"There's more than one way to do it" ということで、
Perl の奥深さについて皆で語り合い、追求してまいりましょう。

CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perlの区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: pc11.2ch.net/php/)

CGI の質問は答えが Perl と全然関係ない話に帰着する場合が
多かったりするので WEB プログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

www.perl.org/get.html
● 2009/02/09 現在の最新版: 5.10.0

▼ 前スレ
Perlについての質問箱 38箱目
pc11.2ch.net/test/read.cgi/tech/1221967332/

リンク集は >>2-3
Perl 日本語処理の基礎の基礎 >>4
過去スレは >>5-6 あたり

175 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 00:21:22 ]
>>169
まだ冗長だね。
#!/usr/bin/perl
while(<>){
print $_;
close(ARGV);
}


176 名前: ◆TWARamEjuA mailto:sage [2009/03/01(日) 00:30:41 BE:2723055-BRZ(10000)]
え?

177 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 00:40:57 ]
PERLっていくら学んでも知らない書き方が出てくるな・・w
>>175
close(ARGV)ってclose($ARGV)やclose(@ARGV)とはどう違うん?
とりあえず、printの後の$_は省略出来るぜ

178 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 00:45:08 ]
>>175
おお、d>printの後の$_
close(ARGV)はコマンドラインで指定されたファイルのうち今開いてるファイルを閉じる。
次の<>では次のファイルを開く。

179 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 00:52:04 ]
#!/usr/bin/perl -n
print ;
close ARGV;

180 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:17:03 ]
% perl -ne 'print;close ARGV'

181 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:23:46 ]
perl -pe 'close ARGV' *

182 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:32:22 ]
perl -pe'close ARGV' *

183 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:57:48 ]
head -n 1 -q *



184 名前:デフォルトの名無しさん [2009/03/01(日) 08:33:59 ]
#!/usr/local/bin/radin;
print $musabetsutero;


185 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 10:38:53 ]
>>184
いつのネタだよ。ったく。

186 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 10:42:21 ]
>>181
先にcloseしちゃうからダメじゃん。

187 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 11:04:56 ]
>>186
closeする前に1行分が読み込まれてるから大丈夫。

188 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 11:13:47 ]
>>187
あ、そか。さんくす。

189 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 12:05:50 ]
日本語でおk

190 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 12:12:36 ]
openで開くファイル名に使えない文字コードってありますか?
Shift-jisでスクリプトを書いていてShift-jisのファイル名でファイルを作成しようとするとエラーは出ないのですがファイルが作成できません
英数字のファイル名だとファイルが作成できます

191 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 12:16:16 ]
>>190
システムがShift-JISのファイル名に対応してなかったら当然作れない。
あと""で囲むとメタ文字が発動するかもな。

192 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 12:28:07 ]
使用環境はWindows+ActivePer5.10.0lです

$file = "テスト";
open FH, ">$file"; →失敗
open FH, '>$file'; →書き込めるが当然変数展開がされない
open FH, ">テスト"; →成功
open FH, '>テスト'; →成功

ファイル名を変数を使わずに直接記述するとうまくいきました
変数に格納されている文字列の形式がおかしいのかな…

193 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 12:35:19 ]
>>192
調べてないけど、2回""で囲ってるからメタ文字が二度発動してるんだと思われ。



194 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 12:37:40 ]
まあ、Shift_JIS文字列はいかなる場合でもメタ文字に気をつけるのが吉。
ダメ文字という言葉は知っておいた方がいい。

195 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:24:19 ]
時々ファイル名にもIOレイヤみたいな仕組みが欲しくなるね。

196 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:45:53 ]
ダメ文字の対処法としてメジャーなのが

$a = '十\';

だと思うが、探すのもメンテも面倒だしなんかイラッとくるから、

$a = <<'EOF';

EOF
chop($a);

とするようにしてる。

197 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:47:50 ]
つーかそんな面倒なことしなくてもqwで何とかなるような気がしてきた。
昔はqwなかったからその時の流儀をそのまま使ってる。

198 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:53:03 ]
あー久しぶりにこのコード書くなと思ったら、最近はUTF-8でコード書いて出力時変換だな。
連投スマソ

199 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 17:07:13 ]
>>190-198 のような話題を解決するために
>>4のテンプレがあるのにな。

200 名前:190 mailto:sage [2009/03/01(日) 19:41:26 ]
open ">$file";
ならファイルが作成できるんですが、
open ">$file.txt"にするとだめでした
事前に$file .= ".txt";
で文字結合してもだめでした

201 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:48:27 ]
file="テスト"なんだよね?
ソースファイルのエンコーディングは何?
もしSJISでなければSJISにしてみては?



202 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:49:52 ]
ってSJISって書いてあった。すまん

203 名前:190 mailto:sage [2009/03/01(日) 19:53:45 ]
ソースファイルのエンコーディングはSJISです
open ">テスト.txt";はできます

末尾に.txtを文字結合すると書き込めなくなるようです



204 名前:190 mailto:sage [2009/03/01(日) 20:00:43 ]
Dumpしてみたら原因がわかりました
改行コードを含んでいたようです
スレ汚し失礼しました

205 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 22:41:48 BE:1417729695-2BP(192)]
Perrrrrrrrrrrrrrrrrrrrrrrrrrrrnrrrrrrl

206 名前:デフォルトの名無しさん [2009/03/03(火) 13:58:07 ]
オブジェクト指向の勉強中なんだが…

my(%ch, $i);
$i = 0;
sub new{
my($pkg, $data) = @_;

$ch{$i} = $data;
my $self = {obj_num => $i ++};
return bless $self, $pkg;
}

sub DESTROY{
delete $ch{$_->{obj_num}};
}

カプセル化ってこんな感じでいいの?
自分で動かした感じは問題なさそうだけど普通のオブジェクトとアクセサしか使えないだけで同じ動作する?

207 名前:1/2 mailto:sage [2009/03/03(火) 17:18:15 ]
$iがゴニョゴニョとか$_って何よ?とかあるが…それを差し引いて
どのレベルでのカプセル化を言っとるんだ?
その例だと、呼出元にて、$obj->{obj_num} = 10 ; とかしてobj_numに
直接代入可能だから、その点ではカプセル化されたとは言えん。
只、編集とか継承とかしない限りにおいて、$ch{$obj->{obj_num}} には
アクセス出来ん事だけは確かだ。ゲッタねえし。

インサイドアウトオブジェクトレベルの意味ならば以下に簡単な例。
Hoge2は(恐らく)貴方の目指してた物をインサイドアウトで実現してる。
new時に投入した'hoge'がアクセサを介さず変えられるか?がポイント。

package Hoge; #=== カプセル前 ===
sub new { bless { data => pop }, shift ; }
sub setter { shift->{data} = pop ; return ; }
sub getter { shift->{data} }
1;
package Hoge2; #=== カプセル後 ===
use Scalar::Util qw(refaddr) ;
my %hash ;
sub new { my $obj = bless \do{''}, shift ; $hash{ refaddr $obj } = shift ; $obj ;}
sub getter { $hash{ refaddr shift} ; }
sub setter { $hash{ refaddr shift} = pop ; return ; }
sub DESTROY { delete $hash{ refaddr shift } ; }
1;


208 名前:2/2 mailto:sage [2009/03/03(火) 17:18:54 ]
package main ; #=== 実行 ===
use Data::Dumper ;
use Hoge;
use Hoge2;
my $obj = Hoge->new('hoge') ;
print Dumper $obj ; # ほら丸見えだし、
$obj->setter('fuga') ; # 折角セッタでセットしても
$obj->{data} = 'bar' ; # カプセル化出来てねえよ。
print $obj->getter . qq{\n} ; # ほらね、変えられちゃった
my $obj2 = Hoge2->new('hoge') ;
print Dumper $obj2 ; # bless先がdo{ }で弄り様もねえしなあ。
printf "%s\n", $obj2->getter;
$obj2->setter('fuga') ; # 専用のセッタを用いて漸く変更可能。
printf "%s\n", $obj2->getter;

#Hoge2を以下の様に書いてるサイト(有名所)もあるが、大ポカだから注意!
#package Hoge2;
#my %hash ;
#sub new { my $obj = bless \do{''}, shift ; $hash{ $obj } = shift ; $obj ;}
#sub getter { $hash{ shift } ; }
#sub setter { $hash{ shift } = pop ; return ; }
#sub DESTROY { delete $hash{ shift } ; }
#1;

長文失礼

209 名前:デフォルトの名無しさん [2009/03/03(火) 19:46:08 ]
>>207
それそれ、それ完璧
Scalar:Util の refaddr がよく分からんけど、Dumper に見てもらった限りだとオブジェクトごとに固有の数字を割り振ってくれる感じなのかな?

とりあえずゲッターとセッター書いたのに、
使わなくても自由に書き換えできるなら書く意味ないじゃんってのが気持ち悪かったから、
それが解消できればよかった

$iゴニョゴニョはrefaddrの代わりにオブジェクトごとに固有の数字を割り当てるために使ってたつもり
$_はミスです

後でScalar::Utilについては色々詳しく調べてみます、丁寧にありがとう
助かりました



210 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 19:05:23 ]
>>208
どこらへんが大ポカなの?

211 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 09:30:59 ]
ゥーperlーパー

212 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 11:27:45 ]
Perlかわいいよ

213 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:50:07 ]
*Hoge::huga = /&hogehoge('hugahuga');
としたときに引数が設定されたメソッドが生えると思います
ですが
Hoge::huga('hogehoge');
としてもhogehogeは無視されるようです
設定した引数に加えて更に引数を追加する方法は無いでしょうか



214 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 04:47:47 ]
>213
> *Hoge::huga = /&hogehoge('hugahuga');
> としたときに引数が設定されたメソッドが生えると思います
本当?

> 設定した引数に加えて更に引数を追加する方法は無いでしょうか
*Hoge::huga = sub { hogehoge('hugahuga', @_); };

215 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 12:31:20 ]
>>213

つ Sub::Curry

216 名前:デフォルトの名無しさん [2009/03/07(土) 13:32:36 ]
SUPERAntiSpywareでスキャンしていたら、

Adware.Vundo/Variant [ 4 items ]
Files
C:\PERL\LIB\AUTO\FCNTL\FCNTL.DLL
C:\PERL\LIB\AUTO\LIST\UTIL\UTIL.DLL
C:\PERL\LIB\AUTO\MIME\BASE64\BASE64.DLL
C:\PERL\LIB\AUTO\SOCKET\SOCKET.DLL

と検出されていました。
昔、perlをインストールした憶えはあるのですが、入れた経緯は忘れてしまいました。
これって誤検出ですよね?

誰かSUPERAntiSpyware入れてる方で、検出された方いますか?

217 名前:デフォルトの名無しさん [2009/03/08(日) 12:29:04 ]
perlとawkの使い分けってどうするんでしょうか?

perlが使えればawkでできることは全てできる、それはわかってるんです。
でも、awk使う人ってawk単独で使うわけじゃなくてbash,sed,grepなんかも使えるから
結局出来ることに違いはないですよね。
むしろやる内容によってはawkのほうがスッキリ書けますし。

どういった場合にどちらを使えば良いのか教えて下さい。

※awkは古いからダメとか、ダサいとか、そういうのは抜きにして下さい。
 純粋に有用性の観点のみでお願いします。

218 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 12:35:53 ]
自分が楽だと思う方でいいと思うよ

219 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 12:43:15 ]
>>218
やっぱり楽なほうを選ぶのが賢明ですか。

Windowsだとperl単独のほうが環境を整えやすいでしょうね。
UNIXやLinuxだったら最初から色々入ってるのが普通ですけど。
Cygwinとか入れてよければどちらでも手間は変わらない気がしますけど、
学校や会社のPCなんかだと、何かインストールするのに許可が必要だったりしますし。

220 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 12:47:41 ]
>>217
元awk使いだけど。言語的なメリットはないと思うよ。
Perlはawkの後方互換を目指した言語だからね。awk2perlっつって
awkスクリプトをPerlスクリプトに置換するものがあるのは最近の人は知らなさそう。
ちなみにPerlにはawk互換のためだけに作られた機構がいくつかある。

awkのメリットは必ずプリインストールされているから
root権限持ってない場合でも必ず動くってとこだけど、
今日びデフォルトでPerlが入らないケースは稀だろうから、
このメリットも失われつつある。

長いことCGIプログラマをやってきたけどPerl覚えてからawkを使う機会は
上記のようなケースを除いてゼロになったな。特にここ10年は全く書いてない。

221 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 12:51:19 ]
>>220
a2pで変換すると長〜いスクリプトに変換してくれますよね。
あれってどうにかならないでしょうか。

あれ見るとawkのほうが簡単じゃん、って思ってしまうんですよ。

222 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 12:57:02 ]
>>221
いやいやa2pは人工知能じゃないし、最適化とかはしないから
長くなるのは仕方ない。

awkはバイナリ扱えないとか(今は知らんけど)文字コード変換が大変とか
色々制約あるし、書くのもPerlの方が楽だよ。

223 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:06:22 ]
>>222
>いやいやa2pは人工知能じゃないし、最適化とかはしないから
>長くなるのは仕方ない

私もそれはあるだろうなぁ〜、と思ってましたけど、やっぱりそうですか。


>awkはバイナリ扱えないとか(今は知らんけど)文字コード変換が大変とか
>色々制約あるし、書くのもPerlの方が楽だよ。

シェルスクリプトでバイナリは扱えますよね。
nkfとかconvmvとか使うと文字コード変換できますね。
でも、やっぱりperlのほうが楽なのですか?
もし楽ならperlを学んでみたいなぁ、と思います。



224 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:13:58 ]
>>223
でもやっぱりPerlが楽ですね。awkより短く速く書けるよ。

225 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:23:11 ]
何しろLarry Wallがawkの弱点に音を上げて、awkの欠点弱点を
補うべく作られた言語だからね。そもそもは。

226 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:02:19 ]
awkはできることが少ない。
でも当たり前だよな。

sedはできることが少ない。
grepはできることが少ない。
wcは、mvは・・・
って、言えばその通りだが、
単独で使うわけじゃないから気にするようなことでもない。

一つで何でもやれるようになんていうLarry Wallがバカなだけ。

227 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:37:32 ]
perlとsedの使い分けってどうするんでしょうか?

perlが使えればsedでできることは全てできる、それはわかってるんです。
でも、sed使う人ってsed単独で使うわけじゃなくてbash,awk,grepなんかも使えるから
結局出来ることに違いはないですよね。
むしろやる内容によってはsedのほうがスッキリ書けますし。

どういった場合にどちらを使えば良いのか教えて下さい。

※sedは古いからダメとか、ダサいとか、そういうのは抜きにして下さい。
 純粋に有用性の観点のみでお願いします。

228 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:56:45 ]
>>227
perlとperl以外で同じことをやってみれば違いがわかるだろう。
大雑把な傾向として、シェルスクリプトのほうが覚えることが少なく、
簡単なことは簡単にかける。
日本刀があれば包丁は要らないわけではないのと同様、
Perlがあってもsedは必要。


sed 's/nae/moe/g' akiba.txt

perl -pe 's/nae/moe/g' < akiba.txt

----------------------------------------------

awk 'BEGIN{FS=","}$2 == $3{print $1}' hoge.csv

perl -F',' -alne 'print $F[1] if $F[2] ne $F[3]' hoge.csv



でも、ある程度以上の規模のスクリプトを組んだり、
C言語に近いようなことをしたいならPerlを選びましょう。

229 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:26:42 ]
>>226
Perl不要論ですか。これは新しい。

230 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:37:05 ]
>>228
絶対必要ってわけじゃないだろ。Perlが入ってないマシンいじる
機会があるならともかく。覚えといて損はない程度だと思うが。
日本刀でも料理は出来る。

>>226
インストーラがPerlを要求するご時勢にこんな事言う人がいるとは。
昔はそうやって批判する人もいたけどね。

231 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:47:58 ]
>>230
日本刀で料理w
そこまでムキになって否定しなくてもいいんでない?
世の中シェルスクリプトはできるけどPerlはできない人なんてゴロゴロいるし、
Perlが出来ても使い捨てスクリプトはシェルスクリプトでやる流儀の人もいる。
どうあがいても完全にシェルスクリプトを駆逐するのは無理だよ。
自動車の優位性をいくら説いても原チャリや自転車はなくならないのと同じでさ。

232 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:52:30 ]
>>231
不要とは言ってない。Perlでブートするわけにはいかんだろw
ただマの知識として必要かというとPerlで事足りる人もいるだろう。

233 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:07:30 ]
>>231
お前こそムキになってPerlは必要ないって言ってるじゃん



234 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:07:39 ]
>>232
エンドユーザの立場から一言。

プログラマの方のお考えはごもっともです。
しかし、「高層建築にカンナやカナヅチなんて要らない」的発想が
今日のエンドユーザー・コンピューティングの惨状を招いたのではありませんか?

たかだかちょっとした自動化、文書検索、集計程度も自分で書けない人だらけにしてしまったのは
「素人は言語なんて使わなくていい」という発想のせいだと思えるのですが。

235 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:21:46 ]
自分の目的を達成できれば言語なんて何使ったっていいんだよ。

特にスクリプト系言語を使うってことは、大体が小物でしょう?
自分がサッと書けること。これが重要。

236 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:26:44 ]
>>234
時代のせいだと思います。
例えば自分はWebプログラミング畑だけど、全てのWebアプリケーションを
全部Cで書くことは納期的にほとんど不可能です。awkでは完成すらしない
ものも出てきます。

自分も昔はquick sortくらいは空で書けたけど、Webに足を
突っ込んだ今ではそれすら忘れてしまいました。

237 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:47:37 ]
>>236
quicksortなんてlibcに任せときゃいいんですよ。気に病むことでもない。

238 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:59:13 ]
>>236
quick sortもできないの?
ププ

239 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:03:17 ]
>>237
だね。
>>238みたいになんでも自分で作るとたまに間違うことがあるし、
馬鹿馬鹿しいプライドで心がねじ曲がってしまう。

240 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:17:39 ]
エンドユーザの立場から一言。

プログラマの方のお考えはごもっともです。
しかし、sortコマンド打つのが簡易で合理的な発想だと思えるのですが。

たかだかちょっとしたソートも自分で書けない人だらけにしてしまったのは
「素人はソートなんてやらなくていい」という発想のせいだと思えるのですが。

241 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:22:21 ]
単純なテキストファイルで単純なソートなら sort(1) でもいいんだろうけど

242 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:24:54 ]
FYI

■libcでqsort()を再帰を使って実装してる香具師は怠慢だろ…常識的に考えて
d.hatena.ne.jp/n2s/20070421/p1

243 名前: ◆TWARamEjuA mailto:sage [2009/03/08(日) 18:49:15 BE:1742944-BRZ(10000)]
そーっとしといてやれよ。



244 名前:デフォルトの名無しさん [2009/03/08(日) 20:19:13 ]
>>230
シェル言語ってのは地味に需要がある。
MSがUNIX/Linuxへの対抗心むき出しでWindows PowerShellなんぞ作ってるくらいだから。

UNIX/Linuxを普段使ってる人ってのはシェルを対話的に利用するのに慣れている。
だから、さて何か組もうかって時もシェル言語が第一選択になる。
それでダメな時に別の言語を選ぶ。
UNIXの世界ではシェルでできることはシェルで、というのが昔から暗黙の了解なので
いきなりPerlやPythonでやろうとするのは、コンピュータの世界にWindowsから入った人くらいだろう。
それは例えて言うなら、自家用車を持ってるのにリムジンをレンタルしてドライブするようなもんだ。

245 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 22:44:41 ]
ワンライナーはsed,awk,sortの方が楽なことが
多いな。例えばいくらオプションでsplitを暗黙
にさせても[]書かされる時点で、$1,$2でいい
awkにはかなわない。

もちろんガッツり書くならスクリプト言語。

246 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:17:27 ]
>>244
1行目は同意だが、あとはいつの時代の話だよと思うな。
そりゃ配布物配ろうとか思ったらまずshを選択するだろうが、
例えばWebアプリケーション作る時にshを第一選択肢に上げるか?
hello world以外は特にsh使う場面って思いつかないんだが。

247 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:48:50 ]
>>246
普通にファイル処理やテキスト処理には使うし、
処理を自動化するのにも使うし、
定期的にどっかのサイトにアクセスして、特定の情報だけを記録するとか、
その程度の用途には当たり前に使うと思うが。

本格的なプログラミングか、ワープロとか表計算みたいに出来合いのアプリで済ませるか、
二者択一だったらパソコンライフなんて送れねーよ。

それとも、プログラミングってのはアプリとwebの開発のためだけにあんのか?

248 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:54:32 ]
小規模ならまずシェルで出来ないか考えるよな

249 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:54:45 ]
>>247
例外は認めないのかよw
普遍的な事のように書くから変な誤解受けるんだろ。

んで、それらの用途にシェル使わない人もいると思うが何かデメリットでもあるのか?
「UNIXの世界ではふつー」とかじゃ理由にならんだろ。
例えば毎秒起動とかだったらさすがに少々面倒でもshを第一選択とするのが吉だと思うが。

250 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:58:02 ]
>>249
>んで、それらの用途にシェル使わない人もいると思うが何かデメリットでもあるのか?

同じことができるならそれでいい。
ただし、より面倒臭くなることはあるだろう。
何も難しくないワンライナーでできることに他の物使うとか、そういうのは単なるアホだろ。

251 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:06:37 ]
トリッキーなことしなくても普通にシェルでできるなら、それが一番簡単なんじゃね?
コマンド並べれば動くから
難しいナンチャラ理論やらウンタラ指向やらも考えなくて済む

プログラマでないエンドユーザや管理者にも使えるのは大きなメリットだと思うな

252 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:07:23 ]
>>250
要するに余計面倒な時だけsh使うでもいいわけね。
>>244はとてもそういう論調には見えないけど。

そういう俺はよくshスクリプト書くがな。

253 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:10:49 ]
>>252
w3m -dump www.media-k.co.jp/jiten/wiki.cgi?%A1%E3%B4%E9%CA%B8%BB%FA%A1%A6%A3%C1%A3%C1%A1%E4 | grep '´_'



254 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:11:49 ]
>>250
> 何も難しくないワンライナーでできることに他の物使うとか、そういうのは単なるアホだろ。

Perlプログラミングに没頭してる合間とかだったら、AWKの方が少々短くても
Perlのワンライナーを選択することはあるな。

短く書けるっつったってせいぜい数バイトだろ>>228。頭切り替える方が面倒だわ。

255 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:13:28 ]
>>254
Perlに没頭してるあなたにとってはPerlでやるほうが簡単なんでしょうね
別にそれはそれでいいのでは?
だからといって、それはあなた個人の特殊事情で簡単に感じるだけなのだから、
シェルでやるほうが手間が少ない人にまで強要すべきことではないでしょう

256 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:15:10 ]
>>255
いつ強要したんだよww俺はこうだって言っただけじゃん。
逆に>>244なんかshで出来ることにPerl使う奴は外道みたいな書き方じゃん。

257 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:17:24 ]
この人論点が分かってないからトンチンカンな事を言うのかね。

「何事もshが第一選択にするのが普通、じゃなきゃ外道」

みたいな主張がおかしいと言ってるだけなんだが。

258 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:22:07 ]
>>257
話がかみ合わない理由って案外簡単なんじゃない?
普通にUNIX系OS使ってる人にとってshって標準的な道具だから、
シェルで作業するってのは鉛筆で文字を書くのと同じくらい簡単で当たり前なんだよ。
だから、どうしても他の物を試す前にshで、っていう発想になるだけでしょ。

259 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:01:03 ]
いったい、シェルの話をしているのかシェルスクリプトの話をしているのか
はっきりさせてくれ。

260 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:09:12 ]
つーかPerlの話しようぜ


261 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:20:03 ]
>>259-260の流れわろた


262 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:41:35 ]
この現代に、WEBアプリ以外に何があるの?
世界じゅうどこを見て回っても、WEBアプリしか無いんだから
awk も sh もいらん。perl しか選択の道は無いだろ。

263 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:43:50 ]
最近の家庭電化製品はマイコン内臓でずいぶん賢くなった。
しゃべる電子レンジのファームウエアを awk や sh で書けると思ってんの?



264 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:56:31 ]
宗教の勧誘みたいw

265 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:00:33 ]
shのほうが慣れてるからsh使うという人が、昔は多かった。
イマドキのPerlerには、Perlのワンライナーのほうが慣れてる人が多いんだろうね。

266 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:06:24 ]
>>265
perlの人は

ls

と打たずに

opendir(DIR,'.');
@file = sort readdir(DIR);
foreach(@file){
$time = localtime ((stat($_))[9]);
print "$time"."\t"."$_\n";
}
closedir(DIR);

とやるわけですね?
簡単なことをいちいち
perl ふがほげ
perl うんたらかんたら
ってやるのは不自然なんですけど


267 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:10:37 ]
lsで済むことならlsじゃねえの普通
Windowsユーザならlsなんぞ打たずにファイラとかエクスプローラだろうしな

でも、スクリプトの話じゃなかったのか

268 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:13:40 ]
ファイルの行数調べるのも「Perlでどうやろうか」とか考えちゃうのね
cat hoge | wc -l
とせずに

269 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:14:54 ]
そこは
wc -l <hoge
catとか使わないな

270 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:15:05 ]
>>267
シェルとシェルスクリプトに何の違いがあんの?
コマンドが単発か複数かの違いだけじゃん?

271 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:15:32 ]
ファイルに記述するか
その場でうちこんで終わりかの違いじゃね

272 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:17:15 ]
シェル言語の有用性認めないなら
シェル言語使わなけりゃいいじゃん
そこまで言うならPerlだけで暮らせ

273 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:18:57 ]
bashのコマンド使わないでperlだけで暮らしたらさぞ便利だろうねw



274 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:23:47 ]
Windowsユーザの9割はbashなんて使ってないけどね

275 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:26:16 ]
>>274
この話ではWinユーザは無関係と思われ

UNIXの操作ではシェルが母国語みたいなもんなのに
簡単な用事でも外国語使いたがる変人だけが対象






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<164KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef