c语言printout函数,C语言cgi(1)

这篇博客介绍了使用Perl进行程序调试的经验,包括在Eclipse环境中运行Perl调试器,并探讨了调试过程中变量作用域、步进执行等概念。此外,还详细阐述了一个Perl脚本,用于从文件中查找和计数IP地址,并记录运行时间。接着,展示了Perl程序中数组操作的实例,解释了代码执行的实际结果与预期之间的差异。最后,讨论了CGI的基础知识,通过创建HTML表单和CGI脚本来演示GET和POST方法的区别,并简单介绍了它们在Web交互中的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1

Columbia University

cs3157 – Advanced Programming

Summer 2014, Lab

#2, 60ish points

June 9, 2014

Follow these step-by-step instructions. This

lab must be submitted electronically by Monday June

16th, 11:55 pm.

The

point of the labs is to teach and reinforce specific programming concepts, cut

time off your

homework assignment while trying to maintain your interest. If

you find them tedious or pointless, please

don’t hesitate to bring it to your

instructor’s attention (the same applies the opposite).

Step 1. Visual Editor

and Debugging (5 points)

A debugger is a program that allows you (the

programmer) to step through an executing program (i.e live,

real time) and

track internal information and monitor progress. This allows you to monitor

logical

progress and also track down errors.

Perldoc perldebug

Will

give you more information about the debugging environment. Executing the perl

command with the

-d flag will start perl in debugging mode. Try it….take one

of the scripts from lab1 and execute it

perl -d something.pl

(h gives you

help, q to quit, v shows you some code around you, etc).

The nice part about

eclipse is the ability of running the debugger in a visual environment, so that

you

don’t need to memorize random key commands. (That is a good thing and

bad). You have a choice if you

want to run it from the command line or visual

environment. Be aware that certain specific versions of

eclipse (older) and

certain versions of EPIC (older) have issues with the debug system, which causes

it to

work every other time J?

Write up a paragraph or two about your

experience in running the debugging environment on one of the

lab scripts

from last lab and over the lab 2 assignments. Answer the following questions

after you are

done with the lab:

1) After using the debugger, did your

code work become easier or harder ?

2) Any issues with the perl debugger in

the clic lab ?

3) After using it to watch a variable what can you say about

perl variable scope ?

4) What is the difference between stepping over and

stepping through in regards to subs ?

5) How does the average rainfall in the

Sahara affect Perl development ?

Step 2 (20 points)

Create a perl file

called step2.pl. I am providing a file called “testip” to be used as a test

file.

2

Background information: Computer on the internet are identified

using a few standard conventions.

One of them are IP address. The format for

IP version 4, is 4 sets of numbers between 0-255. So your own

machine might

be 128.59.18.1 etc

1) Given a specific file (passed as a command line

argument (important) ) which contains among

other things, IP addresses, I

would like you to locate and count

any IP address in the file. For example

the ip address 255.234.255.1 (4 numbers separated by a

period).

NOTE: you

need to make sure none of the numbers are not larger than 255

2) I would also

like a printout of all the IP addresses, and the number of times it was seen in

the file.

Addresses can appear multiple times on a line…keep that in

mind.

3) I would like to know how much time has passed from the beginning and

end of the program run,

we would like to see how much time it took to

analyze. Lookup localtime command to see how to

grab the current time.

You

will need to loop through the file, find the ip address (use the regular

expressions covered in class on

Monday), and then keep a count of number of

each one seen. Once done, you can print them out in sorted

order in the

following format:

Processed file YYYYY

Number of unique IP:

3

123.123.123.123 9

12.12.112.2 7

23.125.123.256 2

..

File

analyzed in: 1 minute and 23 seconds

Step 3: (4 points)

Consider the

following Perl program:

#!/usr/bin/perl

use strict;

my(@list) = (5,

"Todd", 3, 2);

$list[2] += 4;

print "M1: ".$list[0]." ".$list[1]."

".$list[2]." ".$list[3]."\n";

($list[1], $list[3]) = funky(@list);

print

"M2: ".$list[0]." ".$list[1]." ".$list[2]." ".$list[3]."\n";

## End of main

program

sub funky {

my($v1, $v2, $v3) = @_;

print "F1: "." ".$v1."

".$v2." ".$v3.

" ".$_[0]." ".$_[1]." ".$_[2]."

".$_[3]."\n";

$_[0]++;

print "F2: "." ".$v1." ".$v2." ".$v3.

"

".$_[0]." ".$_[1]." ".$_[2]." ".$_[3]."\n";

$v3 = "Bill";

print "F3: "."

".$v1." ".$v2." ".$v3.

" ".$_[0]." ".$_[1]." ".$_[2]."

".$_[3]."\n";

3

return($v3, $v2);

} ## Of function FUNKY

What did

you expect the output to look like and what did it actually look like ? Explain

(based on what

we covered in class) what is going on…

Step 4 New Process

monitor (20 points)

As demo-ed in class, you will write a simple process

monitor. You will use the output of the (ps –aux)

command to pick out all the

running pid->program names every 5 seconds. You will run your program

for

10 minutes printing out when a program starts, or stops.

As we

discussed you will need to run the ps command and then create a map list of the

current running

pid and process names. You will compare current to last map

(so if its at 10 seconds, you need to look

back at 5 seconds) for any

processes (pid) which are new to say process is new. Use the old one to look

at

the new one to detect dead process id.

Most of the code was demo-ed in

class, type it up and add comments.

Step 5: Moving information over CGI Intro

(4 points)

We started to talk about CGI in the last class. Forms are simple

ways of feeding information to the user

and having them interact with your

script in some way.

Here is your chance to start to play around with it.

Create a HTML page (feel free to use eclipse or your

favorite text editor)

(step5.html) should have the following code in

it:

Step2

webpage

action=”step5a.pl.cgi” method=POST>

Enter something:

type=”text” name=”t1”>

value=”testpost”>


action=”step5b.pl.cgi” method=GET>

Enter Some text:

type=”text” name=”t2”>

value=”testget”>

step5a.pl.cgi

and step5b.pl.cgi should look like:

use strict;

4

my $time =

localtime;

print "Content-type: text/html\n\n";

print

<

This is the time :

$time

END_OF_PRINTING

foreach my $vars (sort keys %ENV){

print

"$vars=";

print "$ENV{$vars}
";

}

Describe

in a short paragraph what you see is the difference between get and post when

running the

cgi script. Do a quick search and read up on get and post in a

general sense. Which do you think is a better

way to work with ??

Note:

the webserver has perl in /usr/bin/perl

Step 6: More CGI and more basic

practice (5 points):

Copy and adopt the previous html file to a new file

called Step6.html. Have it call step6a.pl.cgi and

step6b.pl.cgi . In both

cases you need to process and display the input passed in, as a simple html

page

saying

I was given Key = …. With a value of = …

(for both input

types).

Hint: This means you need to parse out the arguments passed in.

remember to first split around the & sign

and then around the equal sign.

Example:

my ($pairs,$key,value);

foreach $pairs (split /&/

$inputstring){

#now cut the $pairs around the equal sign …..

Hint2: one of

the methods passes user input through ENV and one passes it through STDIN, but

you still

ENV for the length (see read method in perl)

HINT3: the scripts

are basically the same, get one to work and then copy and convert it for the

other task.

原文:http://www.cnblogs.com/oversea201405/p/3889346.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值