締切済み PerlでWindowsがLinuxかを区別するスクリプト 2003/09/19 16:16 PerlでWindowsがLinuxかを区別するスクリプトを記述したいのですが、何か良い方法はないでしょうか? みんなの回答 (2) 専門家の回答 みんなの回答 Ethersky ベストアンサー率71% (168/235) 2003/09/19 17:54 回答No.2 use Config; if($config{'osname'} =~ /^(MS)?Win/i){ print "Windows"; }else{ print "Mac or Unix"; } 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 noname#25358 2003/09/19 17:06 回答No.1 察するに、実行環境がウィンドウズ(ローカル?)か、アパッチ(サーバー)かを区別したいのではないかと思いますが、そういう解釈でいいでしょうか? であれば、方法はいくらでもあります。 ウィンドウズでは動かない関数というものがいくつかありますんで、そういうのを予め eval {} で囲っておく方法が一般的です。 また、純粋にIF文で区別したいのであれば、__FILE__マクロに「¥」が含まれているかどうかを見る方法もあります。 それから環境変数 SERVER_SOFTWARE に、OSを区別するための文字列が入っていたりもします。 ただし、この手の問題は色々試してみて、自分で最適な方法を見つけるしかないのが常ですが(^_^; 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発Perl 関連するQ&A perlやスクリプトについて perlやスクリプトについて 携帯用にHPのURLをPCから送れるようにしたいのですがそのためのperlやスクリプトの記述がよく分かりません。 自分なりに調べては見たのですが今一よく分かりません。 http://www.futomi.com/lecture/form/index.html 何方か詳しい方がいた場合はご指導下さい。 Perlのワンライナーをスクリプトにしたい 初歩的な質問で恐縮ですが、以下のPerlのワンライナーを、スクリプトファイルに記述するには、どのように書けば良いのでしょうか。 perl -ne "print if ( /aaa/ ); print if ( /bbb/ ); print if ( /ccc/ );" "in.txt" > "out.txt" 下記のようにしてみたのですが、ダメでした。 perl "script.pl" "in.txt" > "out.txt" ----- script.plの内容 ----- print if ( /aaa/ ); print if ( /bbb/ ); print if ( /ccc/ ); --------------------------- 環境はWindowsのコマンドプロンプトです。バッチファイルでの使用を想定しています。 自分はPerlに関する知識が無いので、Perlに関するサイトも見てみたのですが、情報が膨大で、ピンポイントでこの問題を解決する情報を探し出す事が出来ませんでした。 やり方が分かる方がおられましたら、お教え頂けないでしょうか。 windows環境でのperlのパス 以下の環境で開発をしています。 OS: windows XP ActivePerl 5.8.8 apache 2.0.64 レンタルサーバで利用しやすいようにperlスクリプトの第1行目に #!/usr/bin/perl を記述していますが、ActivePerl のありどころが C:\dev\perl\bin\なので第1行目を #!/dev/perl/bin/perl にしなければなりません。 #!/usr/bin/perlの記述をそのまま使う為に巷でよく言われているようなwindowsのジャンクション機能を利用しています。 Cドライブ直下に「usr」ホルダを作り、ここにC:\dev\perl\bin\のジャンクションを設定しました。 するとC:\usr\を覗くとbin\が存在します。つまりC:\dev\perl\bin\はC:\usr\bin\でアクセスできるようになります。 しかしこの状態で#!/usr/bin/perlの記述をそのまま使うと500エラーが出ます。 これ以外に何か良い方法はございませんでしょうか? また同じような開発環境の皆様はperlスクリプトの第1行目をどのように対策されていますでしょうか? 宜しく御教授お願いいたします。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム linuxのperlでWindowsファイルを操作する方法について こんにちは。お世話になります。 題名の件、Perlという枠から外れるかもしれませんが、linux+perlでWindowsのファイルを読み取る、(通常のWindowsの場合と同様、フォルダのダイアログを出して、グラフィカルにファイルを選択、linuxサーバに読み取る)ことはできるのでしょうか? googleでもうまく検索できなかったので、ご教授お願いいたします。 PHPスクリプトでperlスクリプト はじめまして。PHP初心者です。助け舟をお願いします。 PHPスクリプトで、formの表示からデータの受け取り→ファイルに書込み→終了画面の表示ができるスクリプトを書くことが出来ました。 これをphpスクリプト1とします。 POSTで受け取った変数を元に処理した変数を返すperlスクリプトがあります。 これをperlスクリプト1とします。 perlスクリプト1をphpスクリプトにすることは私には困難なため、phpスクリプト1のファイルに書き込む前に、perlスクリプト1を実行→返った変数をphpスクリプトで使用しファイルに書込み→終了画面の表示を行いたいです。 こんなことってできますか? Perlについて教えてください。 Perlについて教えてください。 私はPerl、Linux(FreeBSD,CentOS)について初心者の為よくわからないので2点質問させてください。 ネットでPerlについて調べたところ 1. WindowsでのPerl開発 = Active Perl(ActiveState社) WindowsでのPerl開発 = OSに最初から組み込まれているもの(違っていたらすみません) との記述がありますが、ActiveState社のHPに行くとWindows,Mac,Linux,SunのActive Perl がありますがActive PerlはそれそれのOSで同じソースががつかえるのでしょうか? 2. Windows XPにActive Perlをインストールしたところ「Perl package Manager」もインストール されていたので、起動してみるとインストールされている(インストールできる)PPMが表示されますが PPM(Perl Package Modeule)=Win32用Perlモジュール CPANのPerlモジュール=Linux用のPerlモジュールと考えていたのですが 両方とも表示されています。 CPANで入手できるPerlモジュールはWindows環境下のActive Perlでもしようできるのですか? 馬鹿な質問と思うのかもしれませんが是非教えてください。 環境を区別して、動作を分岐させる方法 シェルスクリプト bashのシェルスクリプトで、Windows(cygwin)とLinuxの環境を区別して、動作を分岐させる方法が知りたいです。 #!/bin/bash #Windows(cygwin)の場合 ls win/ #linuxの場合 ls linux/ #freebsdの場合 ls freebsd/ #MacOSXの場合 ls mac/ シェルスクリプト+perl シェルスクリプト中で1行だけperlを利用したいと思っています。 しかしシェルスクリプトで利用している変数をperlに持っていく方法が分からず悩んでいます。 ---------------------- #!/ban/bash hoge="hogehoge" perl -e ・・・ ←この中で$hogeを利用したい ---------------------- perlですべて書き直せばできるのですが、1行のためだけに、すべてを修正するのもどうかと思いましたので質問させていただきました。 もしご存知の方いらっしゃいましたらお教えください。 <html>perlスクリプト</html> <html>~</html>の中に複数のperlスクリプトは書けるのでしょうか? htmlファイル1つの中には、<html>~</html>は1つだと思うのですが、 phpだと<?php>~<?>とすれば、<html>~</html>の中に複数書けるみたいですが、perlでも書けるのでしょうか? linuxのスクリプト linuxのスクリプトを用いて計算の効率化を図ろうとしています。 そこで、ファイルの初期値を書き換えて計算していくfor文を作りたいと思っています。 ですが方法がよく分かりません。 教えてくださいませ。 よろしくお願い致します。 Windows2000でperlのcgiを動かすために 職場でファイルサーバー的に使うためにサーバー機が1台入り、その中で社員のコミュニケーション用に掲示板を設置してはどうか?という話しになりました。 そこでWindowsサーバーでPerlが動くように設定する方法を教えていただきたく思います。 OSはWindows2000Serverですので、IIS5.0は入っていると思います。(まだ初期設定した程度でよく見ていません ^_^;;) 色々なサイトでよく「AN HTTPD」なんかが紹介されていますが、IISが入っていればHTTPソフトはいらないんですよね? あと、他サイトを参考に「ActivePerl」は念のためDLしました。 以後の設定手順・注意点等、ご存じの方がいらっしゃいましたら、ご教示願います。 当方Perlの記述に関する知識は少々あり、Unix系サーバーでのcgi設置経験は多数ありますが、Windowsサーバーでしかも自分でサーバー設定した経験はありません。サーバーの設定方法に関して、かなり検索してみたのですが、Linuxが中心でWindowsに関してはオマケ程度の記述しか見つけられませんでした。 また他サイトによると、cgiスクリプトは「scriptフォルダに"置けば"良い」というような記述が見られましたが、"置く"ということはイントラネット内からのftpは必要ないのでしょうか?単純にコピーor保存すればO.K.? いつもやっている、プロバイダのサーバーへftpクライアントで転送・・・というイメージが強いので、イマイチこのあたりのイメージが掴めません。 以上、よろしくお願いいたします。 Linuxでブラウザを開くスクリプトを書くには? WindowsでPerlからブラウザを開くスクリプトは以下の様にすれば実現できますが、Linuxの場合は、どのようにしたら良いのでしょうか? ブラウザは、Mozila5.0です。 あと、Linuxでは、use Encodingを使うとそのようなモジュールは無いと怒られます。ActivePerl特有のモジュールでしょうか?perlは共に5.8を使っています。 #use Encoding; use Win32::OLE; # オブジェクト生成。 my $ie = Win32::OLE->GetActiveObject('InternetExplorer.Application') || Win32::OLE->new('InternetExplorer.Application',sub {shift->Quit}) || die "InternetExplorer: ".Win32::OLE->LastError; $ie->{Visible} = 1; # Visibleに(見えるように)する。 # リクエストを投げてみる。 $ie->Navigate("http://www.yahoo.co.jp/"); while($ie->Busy){sleep 1; } # 待ちの秒数は適当 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム SolarisからLinuxへコピーしたスクリプトについて Solaris上で動作しているPerlスクリプトがあるのですが、 Linux上で動作させることができないので、困っています。 原因を特定するため、Solarisからコピーしたファイルの 中身を、下記コードに入れ替えた場合と、新規にLinux 上で作成した場合を比べてみると、表示結果が異なります。 solarisからコピーしたファイルを表示すると、 「500 サーバ内エラー サーバー内で、実行中のプログラムが異常終了しました。」 と表示されます。 新規にLinux上で作成したファイルを表示すると、 問題なく表示されます。 これくらいしか分からないのですが、何かアドバイスを いただけないでしょうか? # file test.pl <-Solarisからコピーしたファイルを編集 script text executablerl # file test2.pl <-Linux上で新規作成 test.pl: a /usr/bin/perl script text executable ・コード #!/usr/bin/perl print "Content-type: text/plain\n"; print "\n"; print "Hello!World"; exit(0); Perlでプロクシ越えでHTMLファイルを読み込むスクリプト Perlでプロクシ越えでHTMLファイルを読み込むスクリプトを書きたいのですが、どのように記述すればよいでしょうか? LInuxとWindowsでのPerlの動作の違い LinuxでCGI(Perl)プログラムを作っています。 いつも動きの確認は自分のPC(Linux)と友人のPC(LInux)で行なっていました。 そして、昨夜別の友人のPC(Windows XP)を使う機会があってついでにそのPC上でプログラムを動かしてみたら一部が正確に動作してくれませんでした。でも、その後自分のPCで実行すると正確に動作してました。 WindowsとLinuxで動作に差がでるものなのでしょうか? Perlで指定のディレクトリ以下のファイル名を全て表示させるスクリプト Perlで指定のディレクトリ以下のファイル名を全て表示させるスクリプトを考えておりますが、思いつきません。WindowsとLinuxの両方で利用たいです。 何かよいサンプルはありませんか? よろしくお願いします。 WindowsのPostgreSQLと Perl DBD::Pgの相性? Windows版のPostgreSQLをインストールして、PerlのDBD::Pgのモジュールも ppmでインストールしました。 接続しようとすると、 ダイアログボックスが表示され、Perl Commandlineがこけたというメッセージが表示されました。 LinuxのPostgreSQL7.2.3では同じPerlスクリプトでもエラーなく動作しましたが、Windows版では7系がないようですね。 WindowsでPerlのDBD::Pgで正しく動作している方はいらっしゃいますか? ちなみに DBD::ODBC経由だと動作しています。 perlスクリプト perlの勉強をしているものです。人様の作ったスクリプトを解析しています。以下のスクリプトについて質問があります。 while(chomp($in = <STDIN>)){ last if ($in eq "\cD"); print "$in"; } このスクリプトに出てきている、"\cD"の意味と、ifの前に出てきているlastの働きが分かりません。またこのスクリプトは全体としてどのような仕事をするのでしょうか?? 分かる方いらっしゃいましたら、ご教授いただけると幸いです。よろしくお願いします。 windowsからlinuxへ移行(perl) 現在、windowsサーバーからlinuxサーバーへの移行準備をしております。 自社の方でショッピングサイトを経営しておりまして カートの部分はcgi(perl)で以下のような現象が起きています。 ■windowsでの正常な動き (1)購入ページから商品をカートに入れる(カートのページに遷移) (2)カートに入ったことを確認して買い物を続ける(購入ページへ戻る) (3)商品をカートに入れる(カートのページに遷移) (4)カートには2商品が入っている ■linuxでの動き (1)windowsと同様 (2)windowsと同様 (3)windowsと同様 (4)カートに1商品が入っている(前の商品の情報が消えている) windowsサーバーからlinuxサーバー移行時にで変更したのは以下の3点だけとなります。 (1)プログラムパス (2)DB接続情報 (3)パーミッションを755 動きだけをみるとセッション関連のところで何かやらなければいけない感じがしますが、 どこに手を付けてよいのかがわかりません。。。 プログラム修正が必要か? 必要なモジュールが足りないのか?(具体的なモジュール) その他、目を付けるところはあるのか? 大変申し訳ありませんが、 ご教授の方、宜しくお願い致します。 Linux上でのPerlの利用法の利点について もう既に散々論じられていると思うのですが、PHPとPerlの利用法などでの違いを教えてください 自分はPHPとJavaScriptしか出来ませんが、Perlに興味があります。 Web系を作成するのにはPHPで特に問題はありません。 しかし、MySQLなどのサードパーティ製ソフトなどをインストール時にPerl(モジュールやMakefile等)を使用しているのが多いですが、PHPを利用しているというものはありません。 PHPはWebに特化し、コマンドラインから操作できないこともないですが、全く見たことがありません。 そういう点で両者は違う点があると思うのですが、それ以上は自分には分かりませでした。 自分はデータを取ってきて、それを加工して利用したいと考えているのですが、PHPでは自分のやりたい事に限界が出来てしまいます。 で、シェルを含めてLinux上で色々と自動化をしたいと考えているのですが、この場合Perlスクリプトで出来るのかなと思いまして。 PHPで出来ることはPerlで出来る、Perlで出来ることもPHPで出来ると見たことがありますが、PHPに出来ない、PHPよりも優れている点、そして特に自分が知りたいのはLinuxで利用するスクリプト(シェル)としての利用法なのですが、その場合の限界などを教えていただけませんでしょうか? Web上で調べたのですが、いまいち要点を得られませんでした。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など