C言語にて、一部をPerlのスクリプトを呼び出して
使用したいのですが、どうすれば良いかわかりません。
必要なものと、出来ればやり方を簡単に教えていただける
とうれしいです。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

No.1の補足の「Cとしての1つのプログラムにしてしまいたいです。

」の意味が
よくわからないのですが、perl に与えるスクリプトファイルは、C のソースとは
別になっていてもいいのでしょうか?

もしそうなら、例えば以下のようなコードはどうでしょう?
これで、perl スクリプト x の実行結果を C に取り込めますが…
(PATH や例外処理などは省いてあります)

FILE *f;
f = popen("perl x", "r");
(getc などで結果を得る)
pclose(f);
    • good
    • 0
この回答へのお礼

ちょっと試してみました。使えそうです。
とりあえず、これでがんばってみます。
どうもありがとうございます。

お礼日時:2001/07/24 17:16

 Visual C++ であればサンプルがありますので、何か参考になれば。


 俺が作ったモンですけど(^_^;

参考URL:http://www.edit.ne.jp/~deagle/software/sec100.lzh
    • good
    • 0
この回答へのお礼

ありがとうございます。
でもVisual C++わかりません。
Cも初心者です。

お礼日時:2001/07/24 14:40

プラットフォームにもよるでしょう。


UNIX & gcc & Perl ?
Win & MS-VC++ & Active Perl ?
一部というのは、出力を受け取りたいという意味なのでしょうか。

この回答への補足

環境はUNIX&gcc&perlです。
perlで処理した出力を受け取りたいです。
ただし、Cとしての1つのプログラムにしてしまいたいです。

補足日時:2001/07/24 14:30
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q再帰呼び出しを使いますか?

趣味でプログラムをかじる程度なのですが、今まで自分はプログラムを作っていて再帰呼び出しを使ったことがありませんが、みなさんは良く使うのでしょうか?

なかなか再帰呼び出しを考えるのが難しく自分のプログラムで適用すると良いところなど思い浮かびません。
再帰呼び出しをすると何か利点とかあるのでしょうか?
再帰呼び出しで無いと作るのが難しいプログラムなど今までありましたか?あればどんな処理だったかなど教えてください。

Aベストアンサー

すでにいっぱい回答がついていますが、わたしもつられてしまいました。
思うに、「1つ処理するごとに処理対象が減っていく」ものはループがとくいで、
- 処理対象全体をつかめない
- 1つ処理すると、残りの処理対象が増えたりする
- しかも増えた分は、元のものと構造が似ている
という場合に再帰呼び出しの方が簡単にかけるんだと思います。
みなさんが挙げている階層フォルダみたいなツリー構造は、まさにこの典型例ですね。

QC言語にてプログラミングを行っていて、FindFirstFileにてフ

C言語にてプログラミングを行っていて、FindFirstFileにてファイル名を取得しようとしていますがうまくいきません。

第一引数に「D:\test\aaa*」と指定して、aaa01、aaa02、aaa03のようなファイル名が取得したいと考えています。

FindFirstFileの戻り値として、INVALID_HANDLE_VALUEがくるため目的の動作になりません。

上記のような事はできないのでしょうか?

いろいろ調べてみましたが解決できなくて質問させていただきました。

以上ですが、よろしくお願いいたします。

Aベストアンサー

バカにしているようで申し訳ないですがもう一度設定周りを見直してみてはいかがてしょう?
良くあるケースだと。
1. INIに記述したPATHが間違えてる
2. INIからPATHを取得できてない
3. ほんとに存在しない。
ですね。

1.と2.については、INIから取得したPATHを printf() 等にて出力して
その出力されたPATHを dir コマンドに渡してあげるコトで確認できると思います。
手入力じゃなくてコピペするようにしてください。

あとINIに指定したものを取得してFileFindFirstにわたすのなら\のエスケープは不要です。
エスケープはコンパイラの都合ですから。。
1.2.3.やってもだめなら、他の回答にあるように GetLastErrorから終了の原因を突き止めるしかありませんね。

Q呼び出しさんと結婚するには

私は、大相撲が大好きなんです。もしも男だったなら相撲の呼び出しさんになりたいと思っています。しかしながら、私は女なのでその夢は叶いません。なので呼び出しさんと結婚することが私の夢なのです。でもどうしたら呼び出しさんと出会ったり、お付き合いをすることができるのかわかりません。回答よろしくお願いします。

Aベストアンサー

両国あたりをうろうろしていれば相撲関係者の行きつけの店があるはず。
そこに出入りして顔なじみになれば、誰か紹介してもらえるんじゃないかな~とか思うんですが。

それかお見合い相談所や出会い系で「呼び出しさん」限定で探す。
好みの呼び出しさんの連絡先を相撲協会に聞いて手紙を出す。

これぐらいなら速攻思いつきますが、これらを全てやった上で
それでも「出会えない」のでしょうか?
職業限定で探すのもいいけど、もし相手がその職業やめたらどうするんだろう?とも思うんですが・・・。

Qperlスクリプト内の変数を別のCプログラム中の変数に代入するには?

次のようなことは可能でしょうか。もし可能でしたらどのようなスクリプトを書けばよいでしょうか。

test.cというCプログラムがあってこの中ではprintf("x=%d",k);と出力するようになっています。 perlスクリプト内で同様に変数kを定義してforループでまわします。そのループ内でtest.cファイルを開きtest.c内の変数kにperlで定義した変数kの値が代入されてコンパイル・実行するようなスクリプトを組みたいのですが。

なぜこのようなことをしているかというと太郎君がk歳のときのj月のときの身長を記録すると言うようなことをやっているためです。身長の計算は別のCプログラムでやっています。perlスクリプトで1歳、2歳、3歳というディレクトリを作って、各ディレクトリに1月身長.dat、2月身長.dat、・・・12月身長.datというデータをおくことを考えています。

Aベストアンサー

可能は可能です。
system関数で任意のプログラムを起動することができるから、
perlでtest.cを書き換え、gccとtestを起動すればいいわけです。
でもちょっと、いくらなんでもという気がします。

プログラムtestの方を、引数を受け取るようにはできないのでしょうか?
そうすれば
>system "test", $k;
でkの値をプログラムtestに渡せます。

Qビジネスフォンαの内線呼び出しについて

NTTのビジネスフォンα を設置したばかりですが、一つの電話から他の電話へ、呼び出しをする事はできますか?「呼び出し」とは私が連絡したい内線番号を押し”相手の電話は受話器を取らずに、スピーカーから私の呼び出し声を聞く”と言う事です。分かりづらい説明ですが、お分かりの方がいらっしゃいましたら教えてください。よろしくお願いします。

Aベストアンサー

NTTαRXでしょうか?
それでしたら、内線呼び出し中に数字の「0」を押すことで、音声呼び出しに切り替わると思いますよ。
(初期設定で最初から信号音か音声による呼び出しかを設定できますが、電話工事屋さんしかいじれません)

普通だと内線呼び出し音が鳴りますよね、その最中に「0」を押すんです。そうすると、ちょっと間を置いて ピーピー という音が鳴ります。
それから、お話ください。相手の内線電話機のスピーカーからあなたの声が流れるはずです。

Qc言語はどのくらい出来るようになれば良いのでしょうか? 他の言語を勉強する予定ですけど、まずはc言

c言語はどのくらい出来るようになれば良いのでしょうか?

他の言語を勉強する予定ですけど、まずはc言語を勉強しようと思い勉強してるのですが、どこまで出来るようになれば良いのでしょうか

Aベストアンサー

単にC言語の文法を勉強するだけなら難しい事ではありません。
但し、仕事として活用できるレベル、又は他の言語を理解するのに
役に立つレベルになるには、多くの知識と経験が必要になります。

C言語を使って、そこそこ難しいアルゴリズムでも簡単に作れる程度
(最低限)になれば、他の言語でも習得するのは容易ですが、勉強の
目的が他の言語を学ぶ足がかりにするだけなら、C言語を学ぶ効果は
低い物となります。

陸上競技で記録に関係無く100m・200m走るだけなら、誰でも簡単に
出来るが、競技大会において上位入賞できるレベル、又は短距離走
での能力を生かし、他の競技(例えば走り幅跳び)で好記録を出せる
レベルになる事は難しいのと同じ。

Qサブルーチンの引数の、呼び出し側の呼称を得る

サブルーチンの呼び出し、例えば
sr($p);
という呼び出しがあった場合、サブルーチンsb()の中で、引数は@_として扱われて、
 $p
の値などは
 $_
で知ることが出来ます。

それではサブルーチンsb()の方から、
 $_
が呼び出し側で何と呼ばれているか知ることは出来るのでしょうか?

つまり、この場合、$_は呼び出し側で
 $p
と呼ばれているわけですが、この呼称をサブルーチン側で知ることは出来るでしょうか。

Aベストアンサー

そもそもサブルーチン内で
呼び出しもとの実引数の「変数名」を
「本当に必要」な状況そのものを想像できません.
質問の文面とものの言い方から初心者さんではないようなので
もしかするとものすごい状況にいるのかもしれませんが・・・
そうすると,以下に書くようなことは
とっくに検討済みの可能性もありますね

サブルーチンの中で呼び出しもとの変数をいじりたいのであれば
$a=10;
sub { $_[0]++ }->($a);
print $a;
とかすれば,可能ですね(Perlはcall by referenceだから).
もっともこれは,具体的な値そのものを渡せばエラーになります.

ただ「参照渡し」なので,$_[0]と呼び出し元の変数の
実体は同じ,つまり,\$_[0]と\$aは同じだから
\$_[0]と同じ値を持つものをシンボルテーブルから
無理やり探し出すことは可能だと思われます.
$a=10;
sub {foreach $val (values %main::){
*glob=$val;
$temp=$val;
if (\$_[0]==\$glob) {
$temp=~s/\*main:://;
print "argument: \$$temp\n"
}
}
} ->($a);
こんな感じ.
ただし,シンボルテーブルを読んでるわけだから,
レキシカルな変数は相手にできませんし,
この例だと引数はスカラであることが前提です.
けど,リファレンスを渡してあげれば,細工すれば
スカラ以外でも処理できるでしょう.
けど,シンボルテーブルで遊ぶ以外の意味はなさげです.
なお,これは具体的な値を渡すと何も出力されませんし,
レキシカルな変数を相手にするにはどうすればいいでしょうね?
「レキシカルな変数のシンボルテーブル」?
BモジュールとかPadWalkwerとかの「黒魔術の世界」に
浸ればできるのかもしれませんが,私レベルでは分かりません.
#use strictとの両立方法・・・わかりません.

いっそのこと,引数そのものに
もっと細かい情報を持たせるというのもありかもしれません.
Scalar::Utilのdualvar関数を使って
自分自身の情報を変数にもたせるというのもありかも.
もしかするとattributeを利用してもいいのかも
#この段落の内容は実験してない想像にすぎません.

そして,「変数名」を取得して,
サブルーチン内で「ソフトリファレンス」したいのでしょうか?
つまり,
$fred = 23;
$varname = "fred";
++$$varname;
というようなことをしたいということでしょうか?
これは,perldoc perfaq7で
How can I use a variable as a variable name?
の項目をよめば
「Beginners often think」で
「very bad idea」だと詳細な説明があります.
こんなことは先刻承知かもしれませんが.

まあ,なにはともかく
>人間的にみれば第1引数に第2引数の情報は全て入っているのに
これには私も同意しませんけどねえ.
仮に「人間的に入ってても」そもそもPerlは人間じゃないですし,
すべての情報が入っててもそれが渡されるわけではないですな.
それと
>このコーディングは私の無知を象徴することになってしまうので、
無知をさらけ出すよりも
メンテナンスや拡張が困難なコードを残すほうが
私はいやです.
#というか・・・Perlじゃないけど
#メンテナンス困難なコードのバグ取りを
#よくさせられるから・・・
メンテナンス不可の簡潔なコードよりも
メンテナンスが楽な可読性の高い冗長・饒舌なコードのほうが
ずっといいとおもうのは私だけではないと思います.

そもそもサブルーチン内で
呼び出しもとの実引数の「変数名」を
「本当に必要」な状況そのものを想像できません.
質問の文面とものの言い方から初心者さんではないようなので
もしかするとものすごい状況にいるのかもしれませんが・・・
そうすると,以下に書くようなことは
とっくに検討済みの可能性もありますね

サブルーチンの中で呼び出しもとの変数をいじりたいのであれば
$a=10;
sub { $_[0]++ }->($a);
print $a;
とかすれば,可能ですね(Perlはcall by referenceだから).
もっともこれ...続きを読む

QPHPやCGIやPerlやRubyやC言語・・

はじめまして。
仕事上の関係でプログラミングを今から覚えようと思っています。

PHPやCGIやjavaやPerlやRubyやC言語などありますが、
どれをおぼえたらいいのかまったくわかりません。

ちなみに覚えてやろうと思ってることが、
ランキングサイトとサブアドを運営する為です。

この場合何を覚えたらいいのでしょうか?

ちなみに初心者向けやオススメ参考書などあれば一緒に教えてください。

Aベストアンサー

>仕事上の関係でプログラミングを今から覚えようと思っています。
>PHPやCGIやjavaやPerlやRubyやC言語などありますが、
言語は、規模やメンテ性で選ぶものだと思いますが小規模で個人が運営する場合はPHPやPerlが多いと思われます。
ちなみにCGIという言葉は、技術を指す言葉で特定の言語を指すわけではありません。
http://ja.wikipedia.org/wiki/Common_Gateway_Interface

運営するサーバー次第で使える言語も違ったりします。例えば、自分でサーバー自体を管理するのか、サーバーを借りるのかでも話が違ってきます。
C言語をCGIで使うのは、よほど高速性を求めたいときだと思いますのでプロに任せたほうが良いでしょう。
CGI専用のカテゴリがありますので、細かい相談はそちらでお願いします。
[技術者向] コンピューター > プログラミング > CGI

>ランキングサイトとサブアドを運営する為です。
カテゴリを移る前に聞いておきたいのですが、サブアドを運営するってどんなサービスを考えていますか?
ランキングサイトもデータベースが必要となる大規模のものかによって話が違いますので、カテゴリを移る前に検討しておいてください。

カテゴリを移る場合は、こちらの質問を締め切ってください。マルチポストで削除対象になってしまいます。

>仕事上の関係でプログラミングを今から覚えようと思っています。
>PHPやCGIやjavaやPerlやRubyやC言語などありますが、
言語は、規模やメンテ性で選ぶものだと思いますが小規模で個人が運営する場合はPHPやPerlが多いと思われます。
ちなみにCGIという言葉は、技術を指す言葉で特定の言語を指すわけではありません。
http://ja.wikipedia.org/wiki/Common_Gateway_Interface

運営するサーバー次第で使える言語も違ったりします。例えば、自分でサーバー自体を管理するのか、サーバーを借りるのかでも話が...続きを読む

Q家裁の呼び出し

先日投稿させていただきましたが、私の運転する車から15歳の息子が降りる際に確認せず、ドアを開けた時にバイクに乗った方と接触しました。
息子は警察に「家裁に呼び出しがあるかも」と言われておりました。
ここでは、運転者に過失があるので、呼び出しはないでしょう。と、言われておりましたが、今日、呼び出しの通知がありました。
呼び出しになると、どうなるのでしょうか?
全然わからなくて・・・

Aベストアンサー

とりあえず、交通事故扱いでしょうから、
警察での事情聴取と調書が作成されたはずです。

成人の場合は、それらの書類は裁判所に送られ最終的に処分が出ますが、
少年が加わった場合は、少年法により少年へは刑を下す事は出来ない為、
家庭裁判所に書類が回り、家庭裁判所でどうするかの判断が下される事になります。

今回のケースですと、家裁に書類が来たため、とりあえず本人・保護者から
話を聞こう、という段階だと思います。

先ほども言った様に、少年には成人の様な刑が下せません。
例え殺人をしようと、万引きをしようと、大人の様な懲役刑・罰金刑などありません。
あるのは、更生させる為の処置だけで、
更生の為に時間を要すると判断されれば、
少年の更生の為に更生保護施設(少年院など)に送られる事になります。

少年院と刑務所を同じように思っている人も少なくありませんが、
状況は一緒でも、理屈や中身は全く違うのです。

脱線して来たので話を元に戻しますが、
今回のケースで刑事的責任は親御さんにありますが、
お子さんへは刑事責任は関係ありませんので、
もし、お子さんが真面目な子であれば、
家裁で話を聞かれてそのまま何もない(不処分)にされる可能性が高いと思われます。

逆に、悪く言えば問題児に相当するお子さんであれば、
何らかの更正処分が下される可能性が高くなります。

更正処分には、
「保護処分」といって親の下でお子さんを管理する処分、
「試験観察処分」といって、親下での管理のほか、保護司(世話役みたいなもの)が付いて
親と保護司と共に更生させるプログラム処分、
少年院を代表する「更生施設への入院」という処分に分かれています。

これらは、大人の刑とは違い、更生プログラムの一環なので、
犯した罪の重さはあまり関係ありません。
※ 殺人や世間を騒がす重大事件を犯した場合などはやはり関係しますが。

基本的に判断されるのは家庭環境や非行の進行具合、本人の意思などです。

質問者さんのお子さんがどういう子なのか解りませんが、
今、家庭裁判所でこれらの秤に掛けられそうな状態であるという事になります。

お子さんが非行とは無関係であれば、今回は話を聞かれて終わりだと思うので
呼ばれたら素直に出頭し、お話しされればそれで終わるはずです。

とりあえず、交通事故扱いでしょうから、
警察での事情聴取と調書が作成されたはずです。

成人の場合は、それらの書類は裁判所に送られ最終的に処分が出ますが、
少年が加わった場合は、少年法により少年へは刑を下す事は出来ない為、
家庭裁判所に書類が回り、家庭裁判所でどうするかの判断が下される事になります。

今回のケースですと、家裁に書類が来たため、とりあえず本人・保護者から
話を聞こう、という段階だと思います。

先ほども言った様に、少年には成人の様な刑が下せません。
例え殺人をしようと...続きを読む

Qperlは漢字の変数が使えますが、C言語では使えないのでしょうか

普段はperlを使っていますが。今般、C言語を使う事になりました。今迄perlの変数は漢字を使っていますので、C言語で漢字の変数が使えると良いのですが不安になります。

コンパイラーに依っても違って来ると思いますが。宜しく、お願いします。

Aベストアンサー

>コンパイラーに依っても違って来ると思いますが。

普通にコンパイラ依存…でしょうね。

http://cdecrement.blog.fc2.com/blog-entry-67.html
VC++では使えるようです。
分割コンパイルでファイル毎に文字コードが異なった場合にどうなるか…は不明ですが。
# main.cppがShift-JISで、sub.cppがUTF-8だった…とかの場合に正常にリンクできるのか?とか…。

ただ……仕事で使われるコードで変数名などに漢字とかの多バイト文字使われると…やり直しを要求される可能性が高いでしょうね。
# 和英辞書とかのサイトはありがたく利用させていただいてますが。


人気Q&Aランキング