2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

36才からの挑戦

1 :挑戦者36歳:02/06/23 16:52 ID:rUJxHOnu
 もう無職4年になるな〜面接も100社近く受けたけど、全部ダメだった。
もう自分で自営業しよ。ダメだったら氏の。と、言うことで何を始めようか
考えた。取り合えずサイト運営して広告収入を得ることを目標に頑張ります。

 perlダウンロードしたが、全くワカラン。。。プログラム経験0なのでキツイ
とにかくガンバロ


2 :マターリ常磐線♪:02/06/23 16:54 ID:yoBXQPcJ
2ゲット!

3 :sage:02/06/23 16:55 ID:N1z8sWLA
とんでもないDQNおやじ現るだな
広告収入(藁

4 :(゚ロ゚)モルァの人 ◆VooMoRaA :02/06/23 16:56 ID:/GF59feQ
perlは本買って、トイレで読むくらいの心構えで読んで覚えれば
それなりには解ってくると思います。
オイラは掲示板cgiをどっかから拾ってきて、本を読みながら覚えました。

5 :(:´〜`)ラクタン:02/06/23 16:58 ID:iEfyEEhf
オンラインショップで通販もやると
いいかもね。できたらアドレスきぼんぬ。

6 : :02/06/23 16:59 ID:Bc8oVUV5
>>1さん
頼もしいです!
36歳でも全然平気だということを後生にぜひ示して下さい。
伝説のスレに記念カキコ。

7 :(・o・)ワッホー ◆sHikMjwE :02/06/23 17:00 ID:M3ParHZq
>>1
>プログラム経験0なので

それはキツイんではないかなぁ




8 :sage:02/06/23 17:04 ID:N1z8sWLA
>>6
マネ虎の経営志望者並みのレスだな(藁。
その気にさせて>>1を再起不能のDQN経営者にする気か?
誰かまともな経営ってもんを教えてやれよ
このままじゃ>>1かわいそすぎるぞ。

9 :ハジケ ◆L4hajiKA :02/06/23 17:04 ID://J/fSGw
>>7
きついというか無謀(w

10 : :02/06/23 17:08 ID:Bc8oVUV5
だって perl ってそんな難しくないでしょ?
小学生でも使ってるって噂もあるけど

11 : :02/06/23 17:09 ID:5eKejdxB

少額でも確実に現金が入る
仕事を選びましょう

サイト運営して広告収入を得る
ってのは最も非現実的な案だと思います


12 :王子様 ◆D48Lv1aI :02/06/23 17:11 ID:yIradArP
>>1

がんばってください

俺は20で情報系専門卒なのに

プログラムで出来ず 卒業後の今 普通にPerlを独学で勉強してるが

それでもきついと思うぐらいだから

やっぱ俺には向かないのかな情報系 とくにプログラミングなんてマジで理解できない

13 :33歳:02/06/23 17:14 ID:iYLL6K/b
>>1
警備くらいならなんとかなるよ。社員は無理だけど。
つうかそのくらいしか無いわな。

しかし、サイト運営で広告収入って・・・。
そんなもん商売になるのかよ?5年前ならともかく今時よう。

14 : :02/06/23 17:15 ID:M3ParHZq
プログラムやってる人たちとかunix触ってる人にとっては
perlは簡単。(まぁperl for winもありますが)
そうでない人は覚えること多いですよ。

生計立てるだけの商売として成り立つのかなぁ・・・
具体的には何も案出てないし、オンラインショップってたって
それなりのセキュリティないとね。

少なくともperlが書けるという技術だけで飯は食えない
残念ですが。

15 :ちんこちんこ:02/06/23 17:16 ID:PR38cQJ5
でしょうねえ。

16 :名無し:02/06/23 17:33 ID:MetDs1iB
Perlって覚えるとどんなの作れるの?

17 :33歳:02/06/23 17:34 ID:xtdmn0+f
金銀パールプレゼント

18 :五代祐作35歳 ◆mXU9.97U :02/06/23 17:38 ID:gb2/qVQc
perlやるならASPやれ
cgiの時代は終わる

ASPは言語じゃないが

19 :五代祐作35歳 ◆mXU9.97U :02/06/23 17:39 ID:gb2/qVQc
あっ、WEB系やるならってことで
perl/cgiのことね

20 :挑戦者36歳:02/06/23 18:38 ID:SnRkTsf5
 レス付いている。無謀と言うことですね。それは自分でもそう思います。
このスレは私のオナニースレと言うことで無視してください。レス付ける事は無いと思いますので。。。

 さて、Perlですが、全然わかりません。正規表現?連想配列?何言っているのか
判らないので無視。
HTMLも覚えないといけないのか。取り合えず<table><form><input>タグだけ覚えた。
後は無視。Topページ作った。どうやってcgi組み込めば良いんだ?
cgiのサンプル見付けてこよ〜

21 : :02/06/23 19:22 ID:lIJl3iPN
知った風な「手段」ばかりに気をとられるな
目的は何だ 生活が出来るだけのカネだろ
自分に出来るものから始めろ
今のままじゃ絶対に自滅するぞ

22 : :02/06/23 20:26 ID:/GF59feQ
.shtmlにしる
つーか、自前のサーバー用意してるのん?

23 :かもめ獣人:02/06/24 00:17 ID:I51tNn88
>>1
頑張れ!!俺も30過ぎちゃったけど何か資格に挑戦するから。

24 :名無しさん:02/06/24 00:30 ID:q+uddhMH
30すぎて資格もヘッタクレもねーだろ・・・

25 :かもめ獣人 :02/06/24 00:31 ID:I51tNn88
あるんだよ。
このままじゃ終われない

26 :33歳:02/06/24 01:21 ID:7s3SpJbm
まあ、屁の足しにもならんと思うが・・・
やらざる得ないわな。

27 :40なりたて:02/06/24 01:46 ID:U6aatcus
6年前に同じ様なこと考えて、ある程度成功したので
その金を元に業種替えして現在に至る者から言わせてもらえば
上でも誰か書いてるけど、圧倒的にタイミングが遅すぎる。
それでも、あえてやるなら関東近郊の地方都市でやればまだ希望持てるかも。
最後に、perlなんかよりも口八丁手八丁。これが大事。

28 :ヒマ:02/06/24 02:02 ID:ntwy2svO
>19

五代サンに質問です。
ASPってこれから伸びますかね?
数年前に、私もそう思って独学で少しやりましたが、ASP自体知名度全然なかった。
今でも、Javaは知っててもASPって何?なんて人多いから・・・。

でも、>>1さん、フリーサーバにCGIなんかを設置して広告収入得るつもりなら
Perlにした方がいいですよ。
ASPのちゃんと使えるフリーのサーバは、今まで一回しか見たこと無いですから。
(しかも抽選だった)
Perlなら無料の所も一杯あります。

29 :挑戦者36歳:02/06/24 02:15 ID:pBvHJ9LD
少しずつ判ってきたぞ。今日のおさらい
$a=5;
$b=$a;
としても、$aに5が入っているんだ。最初悩だぞ〜
引き出しに、もの入れて他の引き出しに移すとイメージしていたのだが
コピーするようだ。これで、連想配列も理解できだぞ〜
名前の付いた引き出しに、ものを入れていくと言うイメージだ。少し利口になった。

後、フリーのgciダウンロードしてきて見てるが、デコードのところが良く判らないな〜
$ENVが環境変数と言うことに気が付くのに時間がかかった。

今日は疲れた寝よ。お休み


30 :競馬止めてねらー:02/06/24 02:30 ID:g+QtDq65
覚えるもんじゃなくて
必要なことやってるまに使えるようになってんだな。

31 :  :02/06/24 02:32 ID:8MjGUvlj
すごいですね。サイト運営で広告収入なんて、超ナウくてバッチグーの
これからの仕事ですよ。

32 :五代祐作35歳 ◆mXU9.97U :02/06/24 02:38 ID:dajJc1by
>>28
ASPは初心者でも比較的取得は容易だし、俺のとこにくる仕事もASPが多いから
>>1に選択肢の一つとしてASPを薦めてみた

確かに知名度は低い(w
サーバーの負担はASPの方が少ない、というのがメリットだと思ってるけど
今後はどうなんだろう
中小企業ではシステム管理者の人手不足で手軽な自社システムを構築できる
ASPを使うケースが多いけどね
伸びるか伸びないかは今後のコンポーネント次第かな

ま、>>1さんは文面を見る限り、趣味の範囲でするみたいだから
フリーのperlでやればいいと思う

33 :38歳:02/06/24 03:16 ID:Qe92V63P
これって、ネタなんじゃないかな〜。
>>1は、Perl熟知してる様な気がする。

34 :挑戦者36歳:02/06/24 15:38 ID:dt49utTI
 今日も逝ってみよう
$a++は$a=$a+1だそうだ。$aを0〜9まで増加させると$aは0〜9まで合計
45になるらしい。だが、$a=0の時、0=0+1となりおかしい。
 左辺の$aと右辺の$aは違うみたいだ。これは数列と考えるとしっくりくる。
$a(n+1)=$a(n)+1
とおくと、一般解:$a(n)=Nはとなり、合計はΣ$a(n)=N*(N+1)/2となる。
N=9を代入するとΣ$a(n)=45で上の合計と一致する。
すなわち左辺の$aは未来の値、右辺の$aは現在の値と言うことらしいが、
Perlではどうゆう風に判断しているのだろうか?不思議だ。

35 :挑戦者36歳:02/06/24 20:09 ID:kSc/ZTcI
取り合えず最初からまとめ

【Perl の文法】

(T)文の末尾には必ずセミコロン";"をつけ、";"までが1つの命令として扱われる。
   例)print "Hello World\n" ;

(U)大文字、小文字は区別して扱われる。
   例)print "Hello World\n"; # ○
      Print "Hello World\n"; # ×

(V)コメントはシャープ"#"からその行の行末まで。

(W)スクリプトはサブルーチンなど特別な処理でない限りそのスクリプトファイルの
    先頭行から順次に実行されていきます。

(X)文字列はダブルコーテーション(")又はシングルコーテーション(')で囲んで
    表示する。(")はその中に含まれる変数や(')を展開。(')はこれを展開しない。

     例)$a = 10 ;
        print "$a" ; # 10と表示
        print '$a' ; # $aと表示


36 :ヒマ:02/06/24 20:40 ID:ntwy2svO
>32

ありがと

37 :挑戦者36歳:02/06/24 21:24 ID:kLfa1zCl
【変数(1)】
 Perlでは型宣言しなくても良いそうだ。
変数には、スカラ変数、配列変数、ハッシュ(連想配列変数)の3種類がある。
先頭の記号で区別する。

 例)$ :スカラ変数
   @ :配列変数
   %:連想配列(ハッシュ)
   & :サブルーチン

(T)スカラー変数:数値、文字列値、リファレンス等の様々な値を1つだけ保持することができる。

   例)$a = 10; # 数値
     $b = "20" ; # 文字列
     $c = $a + $b ; # 数値と文字列を加算
     print $c ; # 表示→ ( 30 )

 数値と文字列の足し算が出来るとは不思議だ。

(U)配列:配列とは複数のスカラ値の集合を表わし、"@"がつき、個々のスカラ値へアクセスするには "0" から始まる添字を指定する。
   この時の添字指定は "[ ]"を用い、個々の要素指定は$"で行う。

   例)@week = ('sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat') ;
     print $week[0] ; #"sun"が表示される。
     print $week[1] ; #"mon"が表示される。

   すなわち
   @week=($week[0],$week[1],$week[2],$week[3],$week[4],$week[5],$week[6]);
   と言うこと。


38 :挑戦者36歳:02/06/24 22:18 ID:471tTJgK
【変数(2)】
(V)ハッシュ(連想配列):配列変数の添字が文字列となったもので添字と対応して保持される。
   "%" がつき、個々のスカラ値へアクセスするには変数名に添字を付け、この時の添字の
   指定は " { } " を用い、個々の要素指定は配列同様"$"で行う。

     例)%week = ('sun', '日曜', 'wed', '水曜', 'fri', '金曜') ;
       print $week{sun} ; # "日曜"が表示される。
       print $week{wen} ; # "水曜"が表示される。
       print $week{fri} ; # "金曜"が表示される。

      名前の付いた引き出しにそれぞれの要素が格納されているイメージ。

(W)型グロブ:型グロブの代入により、全ての変数、サブルーチン名等を別名で使用できる。

   例)$Long_name = "Hello World" ;
     @Long_name = (1,2,3,4) ;
     *short = *Long_name; # グロブの代入
     print $short; # Hello Worldと表示
     print $short[1] ; # 2 と表示

    よく判ら無かった。
    名前の付いた引き出しのあるタンスの名前をLong_nameからshortに変えると言うイメージなのかな?


39 :挑戦者36歳:02/06/24 22:33 ID:AfEbnfwg

【変数(3)】

(X)特殊変数 「 $_ 」指定する変数を省略した時に用いられる特殊な変数だって。

   例) print ; # print $_ ; と同じ
     while(<STDIN>)# while( $_ = <STDIN> ) と同じ
     /^abcd/# $_ =~ /^abcd/ と同じ
     for ( 1..10 ) # $_ をカウンタ1〜10として使用

     @week = ('sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat');
     foreach ( @week ){ # 配列全てに処理を行う
          print ; # $_が使用 print $_ ; と同じ意味
          print "\n"; # 改行の出力 }

     (出力)
      sun
     ・
     ・
     sat

40 :挑戦者36歳:02/06/24 22:34 ID:AfEbnfwg

【変数(3)】

(Y)エスケープシーケンスダブルクォートで囲まれた文字列は、バックスラッシュ
  (¥)と変数による 置換を受ける。シングルクォートで囲まれた文字列はこの
  置換を受けない(\' と\\を除く)。

    例)表示 置換後の意味
      \n 改行
      \r 復帰
      \f 改ページ
      \t タブ
      \b バックスペース
      \a アラーム
      \e エスケープ文字
      \33 文字コード(8進数)
      \x1b 文字コード(16進数)
      \" ダブルコーテーション自身

      $a = "Hello" ;
print "$a World" ;# 表示→ ( Hello World )
      print '$a World' ;# 表示→ ( $a World )

      # エスケープシーケンスの展開
      print "Hello \n World" ;# 表示→ ( Hello
        World )
      print 'Hello \n World" ;# 表示→ ( Hello \n World )


41 :挑戦者36歳:02/06/25 18:00 ID:1dV3bZnp
さあ、今日も逝ってみよー
あと、歳間違っていた。まだ36になっていなかった。35だった。
たいして変わらないが。

【配列への代入】

 例1) @Array[1 ,2 ,3 ,4] = ( 10 ,20 ,30 ,40 ) ;

     先頭の要素は未定義になり2番目の要素から順に格納される。
    ※受取り側で代入される添字を指定している為配列の大きさは変わらない。

 例2) @Array[0..1] = ( 10 ,20 ,30 ,40 ) ;

     先頭の要素は10、2番目の要素が20となり残りの値は無視される。
   ※受取り側で代入される添字を指定している為配列の大きさは変わらない。

 例3) @Array = ( ) ;

     空の配列を作成 :配列の初期化

 例3) $#Array = 2 ;

     配列の大きさを変更する(上記は0〜3の配列になります)。
    この時指定した数値より大きい添字のデータは破棄されてしまう。

42 :挑戦者36歳:02/06/25 18:03 ID:1dV3bZnp
【参照】

次に示すサンプル配列を元に、配列を参照するやり方を見てみる。

 例1) @week = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ) ;

     print $week[2] ;# 表示:'Tue'
     配列の3番目の要素を出力。

 例2)  ( $s1 ,$s2 ,$s3 ) = @week ;
     $s1へ先頭の'Sun'を、$s2へ'Mon'を、$s3へ'Tue'と順に
     スカラ変数へ格納。

 例3) ( $s1 ,$s2 ,$s3 ) = @week[2..4] ;
     $s1へ先頭の'Tue'を、$s2へ'Wed'を、$s3へ'Thu'と配列の参照場所
   を指定してスカラ変数へ格納する事も出来る。このような使い方を
   ※配列スライスと呼ぶそうだ。

  例4) print $#week ;
     $#を使用する事によって、その配列で指定できる最大の添字を参照
     する事が出来る。表示 → 6

  例5) print @week ;
      配列の全ての要素を出力。表示 → SunMonTueWedThuFriSat

  例6) @week = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ) ;
      $size = @week;
      print $size

     解;表示→7


43 :挑戦者36歳:02/06/26 23:26 ID:hn8z7tqt
今日も頑張ろう

【ハッシュへの代入】

 例1) %Hash = ( "one", 1 , "two", 2 ,"three", 3 ) ;#キー値、値、
     キー値、値の順で代入される。
    
      キー値 one two three
         値 1 2 3

 例2) %Hash = ( "one" => 1 , "two" => 2 , "three" => 3 );

     上のサンプルと結果は同等だが、キー値と値の関係を明確に記述する事がる。

 例3) $Hash{five} = 5 ;#キー値 = "five"値 = 5 と対応して作成される。

     %Hash = () ;#空のハッシュを作成。初期化


【参照】

 ハッシュを参照するやり方。

 例1) %Hash = ( "one" => 1 , "two" => 2 , "three" => 3 ) ;
      print $Hash{two};#表示 → 2

 例2) print %Hash ;

     キー値、関連付けられた値の全てを出力。ただしハッシュ全体を出力
     される場合その順番は保証されない。

       表示 → three3two2one1


44 :挑戦者36歳:02/06/26 23:53 ID:jjjIOMNb
【ハッシュ操作】
T)ハッシュ操作関数

   keys :キー値の配列を作成する
   values:値の配列の作成する
   each :キー値、値の一組を配列として取得する
   exists :キー値の存在を調べる
   delete :ハッシュのキー値、値を削除する

  例1) keys
      [通常の配列] = keys [ハッシュ名] ;

     名前のついたハッシュの全てのキーからなる通常の配列を返す。

  例2) values
      [通常の配列] = values [ハッシュ名] ;

     名前のついたハッシュの全てのデータからなる通常の配列を返す。

  例3) each
     ( <キー値> , <値> ) = each [ハッシュ名] ;

     ハッシュより新しいデータを取得し、キー値とデータからなる要素が2つの配列を返す。
     配列が全て読まれるとヌ ルが返る。この関数は実際にハッシュからデータを抜き出す
     事はしないで参照のみ。

  例4) exists
      [ 真|偽 ] = exists $ハッシュ名{キー値} ;

     対象のハッシュに指定したキー値が存在するか確認する。存在した場合は真を、存在
     しなければ偽を返す。ただしキー値が存在すれば真となるのでデータの有無までは
     確認しない。

  例5) delete
      [ 削除されたデータ|偽 ] = delete $ハッシュ名{キー値} ;

     引数で指定した値をハッシュよりキー値、データの全てを削除する。削除に成功すると
    削除した値、失敗すると偽となる値を返す。



45 :挑戦者36歳:02/06/26 23:53 ID:jjjIOMNb
 U)ハッシュ全ての要素に処理を行う

   例1) foreachして全てのキー値を出力する
        foreach $変数 ( keys( %ハッシュ名 ) ) {
         処理
        }

     先ずkeys( %ハッシュ名 )でキー値の配列を作成し、後は毎回$変数へ関数から戻された
     配列の要素が先頭から順に代入される。全て参照し終わった時点でこのforeachブロック
     を終了する。

  例2) foreachして全てのキー値、データを出力する
        foreach $key ( keys( %Hash ) ) {
         print "キー値 : $key\n";
         print "値 : $Hash{$key} \n "
        }

      取得したキー値からデータを参照する。

  例2)whileして全てのキー値、データを出力する

     while ( ( $key , $value ) = each %Hash ){
       print "キー値 : $key\n";
        print "値 : $value \n " ;  
        }

     each関数で毎回ハッシュにあるキー値とデータの組み合わせを1つずつ取得する。
     全部参照し終わった時点で関数よりヌルが返るので繰り返しを終了。


46 :挑戦者36歳:02/06/26 23:58 ID:jjjIOMNb

 V)環境変数 「 %ENV 」

   Perlでは特別なハッシュ 《 %ENV 》 を用いシステムの環境変数を参照、設定する事が
   出来る。

   例) システムに登録されているパスを表示する
      print $ENV{PATH} ;

   ( 主要な環境変数 )

      名前              内容
CONTENT_LENGTH   :標準入力に格納されたPOSTによる入力データのバイト数
GATEWAY_INTERFACE: Webサーバが実行しているCGIのバージョン(大抵1.1)
OS              :Webサーバの使用しているOS
HTTP_ACCEPT      : Webブラウザが扱えるContent-typeの一覧
HTTP_COOKIE      : クッキー情報
HTTP_HOST        : ドメイン名
HTTP_USER_AGENT   : CGIページを要求したWebブラウザとOSを特定できる情報
PATH            : サーバのパス
QUERY_STRINGS     : GETによりWebクライアントから送られるデータ
REMOTE_ADDR      : 訪問者のIPアドレス
REMOTE_HOST      : 訪問者のホスト名(取得できない時はIPアドレス)
REQUEST_METHOD    : データの受け渡し方法 GET か POST
SCRIPT_NAME       : CGIスクリプト名(URL)
SERVER_ADMIN      : Webサーバの管理者に関する情報
SERVER_NAME CGI    :を実行しているマシンのホスト名(取得できない時はIPアドレス)
SERVER_PROTCOL    :Webサーバが実行しているHTTPのバージョン情報
SERVER_PORT       :Webサーバが使用しているTCP/IPのポート番号(大抵は80)
SERVER_SOFTWARE   : CGIを実行しているWebサーバ名


47 :挑戦者36歳:02/06/28 20:11 ID:cM3h1Wtx
【算術演算子】

 T)基本的に数値に対し行う演算子

    $a + $b ・・・$aと$bを足す
    $a - $b ・・・$aから$bを引く
    $a * $b ・・・$aと$bをかける
    $a / $b ・・・$aを$bで割る
    $a % $b ・・・$aを$bで割った余り
    $a ** $b ・・・$aを$b乗する
    $a++ ・・・$aの値を1増やす(インクリメント)
    $a-- ・・・$aの値を1減らす(デクリメント)

  {注} インクリメント、デクリメントでは演算子の位置により意味が異る。

      例)$a = 10 ;
      print $a++ ;# 表示( 10 )
      $a = 10 ;
      print ++$a ;# 表示( 11 )

   {考察}
    >>34で考えたのは++$aの場合のようだ。
   すなわち、数列で考えると
   @)$a++
     n=0のとき$a(1)=$a(0)
     n>=1のとき$a(n+1)=$a(n)+1

   A)++$a
     $a(n+1)=$a(n)+1

  となる。



48 :挑戦者36歳:02/06/28 20:52 ID:x0imGH/A

 U)代入演算子ある変数に値を代入する時に使用する。

   $a = $b・・・ $bを$aに代入する
   $a += $b・・・ $aと$bを足したものを$aへ代入
   $a -= $b・・・ $aから$bを引いたものを$aへ代入
   $a *= $b ・・・$aと$bをかけたものを$aへ代入
   $a /= $b ・・・$aを$bで割ったものを$aへ代入
   $a %= $b ・・・$aを$bで割った余りを$aへ代入
   $a **= $b ・・・$aを$b乗したものを$aへ代入
   $a .= $b ・・・$aと$bを連結したものを$aへ代入(文字列)

 V)ビット演算子ビット単位での処理を行う演算子。

    $a | $b ・・・$aと$bのOR
    $a & $b ・・・$aと$bのAND
       ~$a ・・・$aの否定(全てのビットの反転)
    $a << 1 ・・・$$aを左に1ビットシフト  (2倍)
    $a >> 1 ・・・$aを左に1ビットシフト (1/2)

    例)$a = 100 ;
      print $a << 1 ;# 表示( 200 )
      $a = 100 ;
      print $a >> 2 ;# 表示( 50 )

    不思議だ2進数って。


49 :挑戦者36歳:02/06/28 21:44 ID:MyL3Cpkf
>>48
訂正
誤)>$a << 1 ・・・$$aを左に1ビットシフト  (2倍)
  >$a >> 1 ・・・$aを左に1ビットシフト (1/2)

正)$a << 1 ・・・$aを左に1ビットシフト  (2倍)
  $a >> 1 ・・・$aを右に1ビットシフト (1/2)

ついでに考察

10進数Nを2進数で表現すると

 N=a(n)*2^0+a(n-1)*2^1+ ・・・・ +a(1)*2^(n-1)+a(0)*2^n

となり、a(n)は1か0である。
2進数で表現すると a(n) a(n-1) ・・・・ a(1) a(0)となり

 左に1ビットシフトすると 2進数は 0 a(n) a(n-1) ・・・・ a(1) a(0)となる。
故に10進数Nは

 (N<<1)=0*2^0+a(n)*2^1+ ・・・・ +a(1)*2^(n-1)+a(0)*2^n=2*N

となり2倍になる。

 右に1ビットシフトすると 2進数は a(n) a(n-1) ・・・・ a(1) a(0) 0 となる。
故に10進数Nは

 (N>>1)=a(n)*2^-1+a(n-1)*2^0+ ・・・・ +a(0)*2^(n-1)+0*2^n=N/2

となり1/2倍になる。

と適当に考えたが良いのだろうか?

50 :挑戦者36歳:02/06/28 21:47 ID:MyL3Cpkf

 W)比較演算子

   例)if ( 5 < 10 )

     数値として比較すると → ( 真 )
     文字として比較すると → ( 偽 )

   例)if ( 1 == 1.0 )

     数値として比較すると → ( 真 )
     文字として比較すると → ( 偽 )

  { Perlにおける真と偽}

   「偽と評価されるもの」

    0、長さ0の文字列、未定義(変数に代入も何もしていない状態)

   「真と評価されるもの」

    上のもの意外全て

    例)

      if ( 0 ) # 偽 → 0は偽
      if ( 1 ) # 真 → 0以外は真と評価
      if ( 0.0 ) # 偽 → 数値として評価
      if ( "0.0" ) # 真 → 文字列として評価
      if ( "" ) # 偽 → 長さ0の文字列
      if ( "a" ) # 真 → 文字、文字列は真



51 :挑戦者36歳:02/06/28 21:52 ID:O2RpRwQ0
 X)数値用比較演算子

    $a == $b・・・ 等しい
    $a != $b・・・ 等しくない
    $a > $b・・・ $a が $b より大きい
    $a >= $b・・・ $a が $b 以上
    $a < $b・・・ $a が $b より小さい
    $a <= $b・・・ $a が $b 以下

 Y)文字用比較演算子

   $a eq $b ・・・等しい
   $a ne $b ・・・等しくない
   $a gt $b ・・・$a が $b より大きい
   $a ge $b ・・・$a が $b 以上
   $a lt $b ・・・$a が $b より小さい
   $a le $b ・・・$a が $b 以下


52 :挑戦者36歳:02/06/28 21:52 ID:O2RpRwQ0

 Z)論理演算子論理演算子は通常その式を評価し真であるか、偽であるかという値を返す、
   が、Perlでは真偽を返すのでなく最後に評価された値を返す。

   $a && $b・・・ 左辺が真なら右辺の値を、左辺が偽の時左辺の値を返す
   $a || $b・・・ 左辺が真ならその値を、左辺が偽の時右辺の値を返す
     !$a ・・・$aの否定、偽の時に真

  例)print 1 - 1 && 2 + 2 ; # 左辺が偽なので左辺の値 "0"
    print 1 + 1 && 2 - 2 ; # 左辺が真なので右辺の値 "0"
    print 1 + 1 && 2 + 2 ; # 左辺が真なので右辺の値 "4"
    print 1 - 1 | | 2 + 2 ; # 左辺が偽なので右辺の値 "4"
    print 1 + 1 | | 2 - 2 ; # 左辺が真なので左辺の値 "2"
    print 1 + 1 | | 2 + 2 ; # 左辺が真なので左辺の値 "2"
    print !1         ; # 真なので偽の値 "未定義"
    print !0         ; # 偽なので真の値 "1"
    print !""        ; # 偽なので真の値 "1"

 [)条件演算子条件演算子とは条件の真か偽によって代入する値を変更する事が出来る。

  「 条件演算子を使用しない場合」
   if ( 条件式 ) {
   代入変数 = 真 ;
    } else {
   代入変数 = 偽 ;
    }

  「 条件演算子使用 」

   < 代入変数 > = < 条件式 > ? < 真 > : < 偽 >

53 :挑戦者36歳:02/06/29 17:44 ID:654s75Po

 【ファイル操作】

ファイルを使用するには先立ってファイルを open 文を用いオープンする必要がる。
open ではファイルハンドル、使用するファイル、操作方法を指定する。何らかの理由で
オープンに失敗した場合は、偽となる値を返す。

 T)ファイルを開く
   open ( FILEHANDLE , "ファイル名" ) ;

   「 ファイルハンドル 」

    ファイルハンドルとはオープンしたファイルを表わす変数でプレフィクスは付けない。
   通常は大文字で指定する習慣になっている。( 絶対ではない )出力、読込みの時に open
   で取得したファイルハンドルを指定してファイルへの操作を行う。

    例)構文 意味
       open ( FILEHANDLE , " < filename " ) ; 読込み用
       open ( FILEHANDLE , " > filename " ) ; 書込み用 (上書き)
       open ( FILEHANDLE , " >> filename " ) ; 書込み用 (追加)
       open ( FILEHANDLE , " +> filename " ) ; 読み書き用
       open ( FILEHANDLE , " +< filename " ) ; 読み書き用

 U)ファイルを閉じる

    オープンしたファイルは close を用い開放する必要がある。通常ファイルへの入出力は
   即時に行われるのでは無く入出力用バッファに貯められ一定量になった段階か close が
   行われた時に出力さる。

     close ( FILEHANDLE ) ;

 V) 一行の読込み

     $line = <FILEHANDLE> ;

     FILEHANDLEに対応づけられたファイルの先頭から1行ずつデータを読み込んで行く。
    デフォルトでは1行の区切りとして改行文字が用いられる。


54 :挑戦者36歳:02/06/29 18:09 ID:toXm7svD

 W) リストコンテキストによる一括読込み

    @array = <FILEHANDLE> ;

    リストコンテキストでデータを受け取るとFILEHANDLEに対応づけられたファイルの
   内容を一括して配列へ代入する事が出来き、1行目が $array[0]に格納される。

 X) read 関数による読込み

    read ( FILEHANDLE , スカラ変数 , 読み出すバイト長 ) ;

    例) read(FILEHANDLE,$data,64);

       ファイルの先頭から 64Byteのデータを取得する。
      このread によるデータの読込みは CGI でデータの受け渡し方法が POST の時データ
      を受け取る際に、標準入力から送信されたバイト数分データを読み込むのに使用する。


55 :挑戦者36歳:02/06/29 18:09 ID:toXm7svD

 Y)ファイルへの書込み

    print FILEHANDLE 出力データ ;

    ファイルへの出力は通常の print , printf の引数に open で取得したファイルハンドル
   を指定し、それ以外は通常の print文と変りない。

    例) syswriteを使用する出力

       syswrite [ FILEHANDLE ] , [出力データ] , [出力バイト長];

       システムコール read(2) を用いて、指定した ファイルハンドルから、変数へ、指定バイト
     分のデータ出力込みを試む。printと異なりデータのバッファリングを行わず実行時すぐに
     データを出力する。

    例)whileとの併用

      while ( $line = <FILEHANDLE> ){
          処理
          }
      この例ではスカラ変数《$line》へファイルの内容が先頭から順に一行ずつ読み込まれていき、
     全て読み出すとこの繰り返しを終了する。

      省略形

      while (<FILEHANDLE> ){
          処理
          }
       この例は上の例と同等の処理だが、代入されるスカラ変数として $_ が用いられる。



56 :挑戦者36歳:02/06/29 18:10 ID:toXm7svD

    例)foreachとの併用

      @Array = <FILEHANDLE> ;
     foreach $tmp ( @Array ) {
          処理
          }
       これも上の例と同等の処理だが、配列へファイルの内容を一括して代入してその配列
      にforeachを使用する。

    例)オープン時のエラートラップ

       open ( FILEHANDLE , "< filename ") || die "ファイルを開けません :$!\n";

      論理積演算子(|| 又は or)で結合する事により、open が成功すれば真として右側の命令
     は実行されない、失敗し偽となる値が戻った時に右側の命令が実行される。

     die関数

     引数の値を STDERR に出力して、現在の $! (エラー番号) で終了する。


57 :挑戦者36歳:02/06/29 18:25 ID:Ul+JN4q2

 Z)ファイル検査演算子
   記号  意味
   -r  読み込み可能であれば
   -w  書き込み可能であれば
   -x  実行可能であれば
   -o  自分のものであれば
   -R  実uid/gidで読み込み可能であれば
   -W  実uid/gidで書き込み可能であれば
   -X  実uid/gidで実行可能であれば
   -O  実uidのものであれば
   -e  ファイルが存在すれば
   -z  ファイルサイズが0であれば
   -s  サイズが0でなければ
   -f  通常ファイルであれば
   -d  ディレクトリであれば
   -l  シンボリックリンクであれば
   -p  名前付きパイプであれば
   -S  ソケットであれば
   -b  ブロック型スペシャルファイルであれば
   -c  キャラクタ型スペシャルファイルであれば
   -u  setuidビットが立っていれば
   -g  setgifビットが立っていれば
   -k  stickyビットが立っていれば
   -t  ファイルハンドルが tty としてオープンされていれば
   -T  ファイルがテキストファイルであれば
   -B  ファイルがバイナリファイルであれば
   -M  perl起動時における、ファイルの更新時刻からの日数
   -A  perl起動時における、ファイルの参照時刻からの日数
   -C  perl起動時における、ファイルの作成時刻からの日数

   例)
     if ( -e "sample.txt" ) {
       print "sample.txt は存在します。" ;
      } else {
       print "sample.txt 存在しません。" ;
      }


58 :挑戦者36歳:02/06/29 18:26 ID:Ul+JN4q2

 [)その他のファイル操作関数
    tell   現在のファイルポインタ取得
    seek  ファイルポインタ設定
    eof   ファイル終端確認
    stat   ファイルの情報取得
    unlink ファイルの削除
    rename ファイルの名称変更



   例)tell
     < ファイルポインタ > = tell FILEHANDLE ;

    引数で与えられたファイルハンドルの現在のファイルポインタの位置を返す。
    ※ファイルポインタ → 現在の書込み、読込み位置

   例)seek
     seek < FILEHANDLE > , < オフセット値 > , < 起点 > ;

    対象のファイルハンドルにファイルポインタを設定します。成功の時は真、失敗すれば偽
    を返す。第3引数に起点(下記参照)第2引数にオフセット値を設定する。

          起点
       1 ファイルの先頭
       2 現在のファイルポインタ
       3 ファイルの末尾

   例)eof
     < 真 | 偽 > = eof FILEHANDLE ;

     指定されたファイルハンドルの最終行か、ファイルハンドルがオープンされていなければ
     真を返す。



59 :挑戦者36歳:02/06/29 18:26 ID:Ul+JN4q2

   例)stat
     < 配列変数 > = stat [ FILEHANDLE | ファイル名 ] ;

     ファイルハンドル又はフルパスで指定したファイルの情報を13要素の配列として返す。
    失敗した時はヌルリストが返る。 ※要素は下記参照 ( Windows 環境では無い情報も在る)


   添字    取得される内容
    0 ファイルシステムのデバイス情報
    1 Iノード番号
    2 ファイルモード(パーミッション等)
    3 対象ファイルのリンク数
    4 対象ファイルの所有書のユーザID
    5 対象ファイルのグループのグループID
    6 デバイス識別子
    7 ファイルサイズ(バイト数)
    8 最終アクセス時間
    9 最終変更時間
   10 最終 I ノード変更時間
   11 最適ブロックサイズ
   12 割当てられているブロック数

   例)unlink
     < 削除したファイル数 > = unlink ファイル名1 ファイル名2 … ;

    指定したファイルを削除する。引数に削除するファイルを指定し、戻り値は削除した
    ファイルの数が返る。

   例)rename
     < 真 | 偽 > = rename < 現在のファイル名 > , < 変更後のファイル名 > ;

    ファイル名を変更する。第一引数に現在のファイル名、第二引数に変更するファイル名を
    指定する。成功すれば真、失敗すれば偽が返る。


60 :挑戦者36歳:02/06/30 22:01 ID:NrUHRjkZ

【サブルーチン】

T)宣言 & 呼び出し方宣言

「宣言」

サブルーチンの定義は次のように行う。
sub サブルーチン名 {
処理
}

「呼び出し」

プログラマによって呼び出す事によって始めて実行さる。
サブルーチンにはプレフィクス "&" を付る。

U) プレフィクスを用いた呼出し

&サブルーチン名 ; # 引数を与えない呼び出し
&サブルーチン名 ( 引数リスト ) ; # 引数を与える呼び出し
do &サブルーチン名 ; # 引数を与えない呼び出し
do &サブルーチン名 ( 引数リスト ) ; # 引数を与える呼び出し

例)sub syori_A {
print "A" ;# サブルーチンの定義(この時点では実行されない)
}

sub syori_B {
print "B" ;# サブルーチンの定義(この時点では実行さない)
}

&syori_A ;# プレフィクス省略可能
&syori_B ;#     〃
do &syori_B ;
do &syori_A ;

表示 → ( ABBA )


61 :挑戦者36歳:02/06/30 22:05 ID:7nrzXquZ

V)値の戻し、引数の受け取り結果の戻し

@)return
return" 命令により引数に指定された値ををサブルーチンの結果として呼び出し側に
知らせることが出来きる。"return" 命令は実行された時点で呼び出し側に制御が戻る。

例)print &sub_A ;
&sub_A{ return "Hello World\n" ;}

出力→Hello World

A)returnを用いない場合
サブルーチン内で "return" 命令を実行しなければサブルーチンの最後まで処理を実行し、
最後に評価された値をサブルーチンの戻り値として戻す。

例)if ( &sub_A ) {print "数値が含まれています\n" ;
} else {print "数値は含まれていません\n" ;}

sub sub_A {$x = "Hello World!!" ;
x =~ /[0-9]/ ? 1 : 0 ;}

上の例では関数の戻り値を if 分の判定条件として使用している、サブルーチン内では
"return" 命令は使用していないので最後に実行された正規表現による結果が返される。
※条件演算子による評価を行わなくても同じ結果となる。

B)引数の受け取り
サブルーチンへ引数を指定しサブルーチンの処理を変更することが出来る。
指定した引数は特殊変数 "@_" へ格納される。

例)「呼び出し側」
&Sub_A ( "Hello" , "World" , "!!" ) ;

Hello World !!
$_[0] $_[1] $_[2]
@
「 受け取り例 」
sub Sub_A { ( $a , $b , $c ) = @_ ; # 特殊変数からの引取り}


62 :挑戦者36歳:02/06/30 23:09 ID:hSZ7kBjq

【正規表現】

 T) =~ と !~ の意味・・・・・ =~がマッチした場合。 !~ がマッチしなかった場合。
 U)文字列にマッチさせる。
   . または .? を使う。 . は任意の1文字を表す。 .? は直前に書かれた文字が0個又は1個であることを表す。
   アルファベットにマッチさせる場合、[a-zA-Z]又は\wを使う。
 V)数字にマッチさせる。
   [0-9]又は\dを使う。
 W)数字意外にマッチさせる。
   [^0-9]又は\Dを使う。
 X)文字列以外マッチさせる。
   [^a-zA-Z]又は\W、[ ] [^ ] を使う
 Y)改行にマッチさせる。・・・・・・・ \n、 \r\n
 Z)スペース、タブにマッチさせる・・・・・・\s、 \t
 [)文字列の先頭にマッチさせる
   /^ / を使う
 [)文字列の末尾にマッチさせる
   / $/ を使う
 \)複数のパターンをイチドに書く
   | でつなげて書く
 ])大文字、小文字の区別をせずにマッチさせる。
   / /i
 ]T)大文字、小文字の区別をせずに全文一致を確認する。
     /^文字列$/i
 ]U)マッチした文字列を得る
     ( )
 ]V)マッチした文字列を他の文字列に変換する
     s/ / /


63 :挑戦者36歳:02/06/30 23:31 ID:hSZ7kBjq

 <<目次>>

 【Perl の文法】 >>35

 【変数】
     その1 >>37
     その2 >>38
     その3 >>39
     その4 >>40

 【配列】
    【配列への代入】 >>41
    【参照】 >>42
    【ハッシュへの代入】 【参照】 >>43
    【ハッシュ操作】 >>44-46

 【算術演算子】
    T)基本的に数値に対し行う演算子 >>47
    U)代入演算子ある変数に値を代入する時に使用する。 >>48
    V)ビット演算子ビット単位での処理を行う演算子。 >>48
    W)比較演算子 >>50
    X)数値用比較演算子、Y)文字用比較演算子 >>51
    Z)、[) >>52

 【ファイル操作】
    T)ファイルを開く、U)ファイルを閉じる、V) 一行の読込み >>53
    W) リストコンテキストによる一括読込み >>54
    Y)ファイルへの書込み >>55-56
    Z)ファイル検査演算子 >>57
    [)その他のファイル操作関数 >>58-59

 【サブルーチン】
    T)宣言 & 呼び出し方宣言、U) プレフィクスを用いた呼出し  >>60
    V)値の戻し、引数の受け取り結果の戻し >>61

 【正規表現】 >>61

64 :挑戦者36歳:02/07/01 21:13 ID:L/c8AkR7

今日から実践編!
頑張ろう。取り合えずデコード処理きまり文句みたい。何も考えず使おう!

sub decode {
       local($buffer,@pairs,$name,$value);
       if ($ENV{'REQUEST_METHOD'} eq "POST") {
              read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
         } else { $buffer = $ENV{'QUERY_STRING'}; }

       @pairs = split(/&/,$buffer);
         foreach (@pairs) {
              ($name, $value) = split(/=/);
              $value =~ tr/+/ /;
              $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

              # S-JISコード変換
              &jcode'convert(*value, "sjis", "", "z");

              # タグ処理
              $value =~ s/&/&/g;
              $value =~ s/</</g;
              $value =~ s/>/>/g;

              $in{$name} = $value;
             }

}


65 :挑戦者36歳:02/07/02 03:48 ID:p+l7Qmyc
 デコード処理使って簡単なプログラム作ってみました。
名前とメールをテキストボックスに入力したデータを出力するだけです。

$script='./test.cgi';
require './jcode.pl';

&decode;  #>>64
$uname = $in{'uname'};
$mailadd = $in{'mailadd'};
&jcode::convert(*uname,'euc');

print "Content-type: text/html\n\n";
print <<"EOM";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="japanese">
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=EUC_JP">
<title>GCI test</title></head>
<body bgcolor="#ffffff" text="#333333" link="#111177" vlink="#115577">

<h1>フォームテスト</h1><br><br>
<form method="post" action="$script">
名     前:<input type=text name="uname" size="20" value="$uname"><br>
メールアドレス:<input type=text name="mailadd" size="20" value="$mailadd"><br>
<input type=submit value="送信"><input type=reset value="リセット">
</form>
<br><br>名 前:$uname<br>メール:$mailadd<br>
</body>
</html>
EOM
exit;

66 :挑戦者36歳:02/07/02 03:57 ID:p+l7Qmyc
 
ついでに、昨日買って来た本にGCIモジュールの事が載っていたので、それを用いたプログラム
を作ってみました。>>65と同じプログラムです。

$script='./test.cgi';

use CGI qw(:standard);
require './test/jcode.pl';

$uname = param('uname');
$mailadd = param('mailadd');
&jcode::convert(*uname,'euc');

print header( -type=>'text/html', -charset => 'EUC_JP');
print start_html(-lang => 'japanese',-title => 'GCI test',-bgcolor => '#ffffff',
-text => '#333333',-link => '#111177',-vlink => '#115577');
print h1("フォームテスト"),br,br,"\n",
start_form(-method => 'post',-action => $script),
"名      前:",
textfield(-name => 'uname',-size => '20', -value => "$uname"),br,
"メールアドレス:",
textfield(-name => 'mailadd',-size => '20', -value => "$mailadd"),br,
submit(-value => '送信'),reset(-value =>'リセット'),
end_form;
print br,br,"名 前:$uname",br,"メール:$mailadd",br;
print end_html;
exit;

 GCIモジュール使った方がスッキリしているようです。タグ無いのでプログラムっぽくて個人的には
気にいっています。

67 :ナナシ:02/07/02 07:53 ID:h5JsJLgq
>>66
GCIモジュール?

68 :ERROR:名前いれてちょ。。。:02/07/02 12:41 ID:MjNtKIZw
なんだかんだでやってるじゃん。

69 :挑戦者36歳:02/07/02 21:31 ID:i2AbDECX
>>67 訂正 GCI→CGIです。すいません。

 今日は、干支の表現を考えてみる。
干支は12年周期なので、周期関数を考えようかと思ったが、
たとえば、13年目は 13=12+1と表現できるので、12で割ったときの余り
を考えるだけでいい。
よって、下記のようになる。(1945年のとき酉)

 @etoStr=('酉','戌','亥','子','丑','寅','卯','辰','巳','午','未','さる');

     foreach(1945..2002){
                   $yer = $_- 1945;
                   $etoN=$etoStr[$yer%12];
     print "$etoStr[$yer%12] \n";
}
 ここで、さる年を申とすると、エラー出てしまう。申意外なら問題ないが
良く判らないが、文字化け等関係あるのだろか?


48 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)