| ||||||
| 5/16 |
| 2013/4/9-5/18 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Apps, Computer/SW/Languages/Perl] UID:54650 Activity:nil |
4/04 Is there a good way to diff 2 files that consist of columns of
floating point numbers, such that it only tells me if there's a
difference if the numbers on a given line differ by at least a given
ratio? Say, 1%?
\_ Use Excel.
1. Open foo.txt in Excel. It should convert all numbers to cells in
column A.
2. Open bar.txt in Excel. Ditto.
3. Create a new file in Excel.
4. In cell A1 of the new file, enter this:
=IF(foo.txt!A1=0, IF(bar.txt!A1=0, "same", "different"), IF(ABS((b\
ar.txt!A1-foo.txt!A1)/foo.txt!A1)<1%, "same", "different"))
5. Select cell A1. Hit Ctrl-C to copy.
6. Select the same number of cells as the number of cells that exist
in foo.txt or bar.txt. Hit Ctrl-V to paste.
7. Hit Ctrl-F. In "Find what:", enter "different". In "Look in:",
choose "Values". Click "Find All".
Another way is to write a C program to read the two files using
fscanf("%f") an do the arithmatic.
\_ does this help?
#!/usr/bin/python
import sys
threshold = float(sys.argv[3] if len(sys.argv) > 3 else 0.0000001)
list1 = [float(v) for v in open(sys.argv[1]).readlines()]
list2 = [float(v) for v in open(sys.argv[2]).readlines()]
line = 1
for v1, v2 in zip(list1, list2):
if abs((v1 - v2) / v1) >= threshold:
print "Line %d different (%f != %f)" % (line, v1, v2)
line += 1
\_ Something like this might work ($t is your threshold):
$ perl -e '$t = 0.1 ; while (<>) { chomp($_); ($i,$j) =
split(/ \t/, $_); if ($i > ((1+$t)*$j) || $i < ((1-$t)*j)) {
print "$_\n"; }}' < file |
| 2012/12/18-2013/1/24 [Computer/SW/Languages/Perl] UID:54561 Activity:nil |
12/18 Happy 25th birthday Perl, and FUCK YOU Larry Wall for fucking up
the computer science formalism that sets back compilers development
back for at least a decade:
http://techcrunch.com/2012/12/18/print-happy-25th-birthday-perl
\_ I tried to learn Perl but was scared away by it. Maybe scripting
lanauages have to be like that in order to work well?
\_ I tried to learn Perl but was scared away by its incoherience.
\_ I tried to learn Perl but was scared away by its incoherence.
Maybe scripting languages have to be like that in order to work
well? I don't know other scripting languages.
\_ We laugh at Perl today and say it is the new COBOL, but to give
credit, Perl came out at a time when awk/sed were the ways of
doing things. People didn't know any better, and programming
languages/compilers/parsers were not as formalized as it is
now today.
Try Python, it is a very elegant language that
came out as a result of a lot of the earlier trial and error
and undos a lot of the mistakes that earlier folks made.
Python is VERY consistent (syntax, usage, etc) and very
readable, so that 10000 developers can read and develop
each other's code. Computers evolve. So do languages.
\_ Part of this is just image. People hate perl now. People
loved perl before. Python is cool now. Next it will be
ruby or something else. All of these languages, whether
FORTRAN, COBOL, C++, Java or Python do basically the same
shit to an order of magnitude.
\_ you are not a computer science major. Yes you are correct
that all modern languages all perform the same computations
and have the same power in the Chomsky Hierachy. They
will however provide different features, most of them are
time savings or productivity boosts. Features such as
static typing and static analysis (bane of old dynamic
languages) detects type errors BEFORE the program even
runs (sorry Perl). Dynamic languages saves people time
by not requiring a long dance (e.g. verbose Java/C
declarations) so programmers can focus on coding instead
of syntax. New languages have both features of dynamic
and strong/static typing (e.g. Go, Scala) which allow
programmers to code like dynamic languages AND allow
the compilers to perform semantic analysis. Sorry again
Perl (it is not even a language that can be described in
a standard AST). Look, even old Java itself was a big
thing as programmers no longer need to spend so much
time worrying about memory management and debugging
and monitoring stack trace and heap. Java provides
faster time-to-market over C, just as Go/Scala/etc
will provide faster time-to-market over Java. Don't
discount future programming languages, runtime, and
compilers. There will always be something better
(sorry, Ruby is NOT better) and meta-productivity will
always increase with further language research.
BTW you are probably wondering how much productivity
a higher level language provides. Read the Mythical
Man-Month. It is provide concrete numbers. Read it.
-CS, thesis in programming languages
\_ I have a MS in CS from UCLA and I stand by my statement.
Most of what you say is true, but it doesn't
contradict anything I said. What language is
"better" depends on a lot of variables. Note
specifically that I am not claiming that FORTRAN, Perl,
Java, and C++ are equivalent. Of course not. However,
for solving certain classes of problems they certainly
are. Further, sometimes some of the "advantages" aren't.
There is definitely some element of a beauty contest
when it comes to the "new, improved" language du
jour. When all you have is a hammer, everything looks
like a nail. I see this with freshouts all the time.
\_ what is your thesis? What is UCLA's ranking?
\_ Why don't you ask me how big my penis is?
\_ Since you brought it up...
\_ Are you hitting on me?
\_ It depends on what your answer is.
\_ compare scripting to scripting, and static typed
compiled languages to static typed compiled
languages. Any other comparison is apple & orange.
Perl is a scripting language that can be easily
replaced by any modern scripting language just as
FORTRAN can be replaced by any C/C++ variants today.
How many companies today still actively develop
their products using COBAL?
\_ What is your claim here? |
| 2011/11/2-8 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:54208 Activity:nil |
11/2 Celebrating fifty days of uptime!
00:16:58 up 50 days, 19 min, 13 users, load average: 1.00, 1.00, 1.00
\_ Thanks, jordan!
\_ I would bitch about the 1, but it is not like anyone else is
trying to do anything resource intensive with soda.
\_ The culprit:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25757 edilaic 20 0 32088 4284 2052 R 100 0.1 21565:48 perl
\_ Yeah I saw that too, but it is not like he is slowing anyone
else down. This is some kind of irc bot, right?
\_ rodney on irc.csua/#hosers -- it announces nethack deaths. |
| 2011/1/19-2/19 [Computer/SW/Languages/Perl] UID:54012 Activity:nil |
1/19 Perl god, please go to http://perldoc.perl.org/perlre.html Go to "Quantifiers" and the greedy operator, such as +?, *?, ??, {n,}?, {n,m}? So I understand the greedy operator that does matching based on having different choices (instead of the default maximal munch). What about "{n}?" ? What are some examples of using "{n}?" ? \_ s{2,} will match "ssss" once. s{2,}? will match it twice. \_ that is clear. s{n,} and s{n,m} will match between n to m number of s. Traditionally regex is maximal munch. However the "?" minimal munch operator such as s{n,m}? will perform minimal munch. My question is, if you have just s{n} and you match exactly n number of s, then what is the point of the minimal match, given that there is no choice? \_ It's just for consistency. s{n} and s{n}? are identical. \_ ^consistency^redundancy ^consistency^stupidity Perl programmers are like Republicans-- righteous, unapologetic, and incapable of seeing the point of view from other languages. \_ How would you design it? If s{2,3}? is legal but s{2,2}? is an error, then s{$min,$max}? will fail if $min and $max happen to be equal. That seems suboptimal. \_ "$_Wha???" lol |
| 2010/12/11-2011/2/19 [Computer/SW/Languages/Perl] UID:53984 Activity:nil |
12/11 Anyone have experience with Perl PDF::API2 or PDF::API3? Can you
point me to a good tutorial for creating a simple document (a small
table of 2-3 rows and a single image)? |
| 2010/8/12-9/7 [Computer/SW/Languages/Perl] UID:53922 Activity:nil |
8/12 Ruby coders, do you mostly DIY your stuff or use the ruby libs out
there? How is their quality compared to other libs you have used
for other langs? Thx.
\_ I use Ruby for hobby stuff, etc. I use libraries for system stuff
(web access, process, etc.) but that's about it. Perl libraries are
much better/more complete. I assume because of the maturity and
size of the community.
\_ I've found the quality of ruby libs to be lower than perl, which
also often has quality issues. The plus side is reading the ruby
code to figure out wtf is going on is easier than reading perl, imo
\_ what do either of you think of python libs by comparison
(speaking of readability)?
\_ python is quite mature and the programmers that use it tend to
be much higher quality than ruby. ruby programmers, on average,
are just slightly above average php programmers, which isn't
a very good bar to begin with.
\_ I've looked around with some libraries, most of which give me
the feeling that you are right, from their code base, they
seem to have been made for "grab that low hanging fruit for
mindshare" - it's the dancing bear problem of software.
Mostly written by yeah college kids or highschoolers. Reminds
me of MySQL codebase. Which I guess is where most of these
people are from...
\_ dancing bear?
\_ You don't grade the bear on its routine, you are jus
amazed it dances at all. |
| 5/16 |
| 2009/8/18-9/1 [Computer/SW/Database, Computer/SW/Languages/Perl] UID:53283 Activity:low |
8/18 trying to write an intentionally slow regex.
what is your worst regex ever?
this is using MySQL regexp but I'll also accept
perl format --brain
\_ you need to know how regex is implemented internally in order to
have a worst regex in terms of running time. Something that uses
a decent hash table that fit in L1 cache will be fast regardless.
Lexical analysis with a hash lookup of constant time will be linear
(to the length of input). NFA->DFA. Are you not a CS major?
\_ rather than responding to trolls:
yes, I specified MySQL for a reason:
The inherent linear nature of most
regex engines is what makes the problem challenging.
Soliciting for ideas, not a lecture on how regex works;
remember I went to Cal too. Although if you know how the
MySQL regexp works, I'll take anything you got! --brain
\_ Sorry but I don't think you're a CS major.
\_ Is the OP even aware of DFA vs NFA/traditional NFA/posix
as a start?
\_ What is a MySQL regexp? You should look up the
Qadafi/Khada'ffi regexp.
\_ There are some fairly ugly regexps built into procmail for
things like FROM_DAEMON, and there's some ~6K regexp for
fully validating email addresses (may be in the RFC). These are
big, but not necessarily slow. If MySQL doesn't precompile its
regexes, and it supports extended regexes, you can do stuff with
nested ranges: (.{1,100}){1,100}
Perl regex for RFC822 validation:
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html |
| 2009/6/2-5 [Computer/SW/Languages/Java, Computer/SW/Languages/Perl] UID:53072 Activity:nil |
6/2 http://gmarceau.qc.ca/blog/2009/05/speed-size-and-dependability-of.html Ruby sucks. \_ Looks no different than python/perl/etc. It's a scripting language that needs a virtual machine if it is ever going to be fast. The scary thing is how much modern computing doesn't need stuff to be fast, especially when dealing with web applications. There's also a big problem with that shootout; there's no concept of how your average coder will do in language x. Some languages are amazingly powerful, and if you know what you are doing you can write good, terse, fast code, but if you put an average engineer down and teach them the language they will write unmaintainable garbage that noone can read (even after years of experiance). That's what dependability really means. \_ As above, if Ruby sucks here then so do Python and Perl. |
| 2009/5/6-14 [Computer/SW/Languages/Perl, Computer/SW/Languages/Web] UID:52961 Activity:kinda low |
5/6 I'm sure you've seen web sites that distribute software by making
a user fill out a form and then e-mailing the user a randomly
generate link to the software that works just once. What software
is used to do this? I'd like to distribute software in such a way.
\_ "Software"? What web server/web application environment
are you using?
\_ Yes, software. Like let's say I have a software package I am
distributing and it's a tar.gz. Right now people just
download it, but I'd like to use one of these more
sophisticated systems to track who downloads it and give
them a link that works just once. I can use whatever web
server or environment will do the job.
\_ Uck. Those types of links suck. Please don't.
\_ What sucks about it? I never had any issues with these. It is
not acceptable to publish a publically accessible link, so
what do you suggest instead?
\_ I've never downloaded softward this way, but I have downloaded
a secured copy of my tax return from my CPA this way. They use
something from LeapFILE. -- yuen
\_ I'll look into it, thanks. Any other suggestions? I am surprised
most of you have never dealt with this. It's really common
when downloading commercial software like compilers and such.
\_ It's something I could build in an afternoon, and by
doing it myself it would be a lot easier to integrate with
all my existing deployments. Sometimes it's just easier to
write it yourself.
\_ It's usually a lot more trouble to write it yourself.
Then you get to maintain it, too. These hacks are
always simple upfront and evolve into headaches later.
Seems a lot of people use PHP + MySQL for this and
continually reinvent the wheel, which I think is silly. A
perl module sounds like a good idea. It's also a lot of
baggage for something so simple. I need to install a
*database* and a scripting language just for this? Just
installing PHP will probably get me hacked.
\_ Gee, you already have a scripting language, it's
called perl. You are going to need a database of some
sort no matter what. (It doesn't need to be mysql
or a relational database, but you are going to need
some sort of data store.) A perl module doesn't make
sense. If (token in store) then (remove token and
serve application). How hard is that to write?
\_ perl module makes a lot more sense than PHP to me.
You also don't really need a database of any kind.
Why for? You can do fancier things with a DB,
but it's not really needed. All you need is to
be able to do is generate a random URL and keep some
counters. It's not a matter of "how hard is that
to write" as it is that I'd rather spend $50 for
an app to do this than spend $100/hour for a
developer to write and maintain this, even if he
spends just 10 hours/year on it.
\_ Because you are forgetting the time to
install/set up the damn app in the first place.
That takes time too.
\_ Yes and it will have to be setup and installed
no matter if I write it or buy it. So that's a
wash.
\_ curious, why go to the trouble? What's to stop someone from
replublishing the software on their torrent site of choice,
unless you're also watermarking the software image, ni effect
customizing the copy for the downloader ?
\_ CYA. If someone else publishes it then they are the ones
that will go to jail. Whereas, if I publish it to the
world then it will be me in jail.
\_ There's a legal aspect to it. If I have a one-time link,
I can make sure you only get the software after you've
agreed to my license agreement. If you can download the
software without clicking through the license, you can
argue that you're not bound by the license.
\_ You might also want to avoid people being able to
"deep link" to the software, thereby depriving you of
ad revenue. The place I work for is in this situation.
\_ He wants to collect email addresses. |
| 2009/1/14-22 [Computer/SW/Languages/Perl, Computer/SW/Languages/Misc] UID:52378 Activity:nil |
1/13 I want to extract a couple integer from an xml file, mainly,
xml file from http://weather.com so I can put it on my xplanet marker
file. has anyone done similar things (parse and extract data
from xml) using shell script instead of python/perl?
in the world of perl, it make sense to dump things into a hash
which i can easily extract key/value pair. can i achieve similar
things with xmllint/xmlcatalog? thanks
\_ xmlstarlet lets you do xpath/xslt stuff via the command line
\_ didn't know this existed... Thanks
\_ thanks again for telling me about xmlstarlet. this is
wonderful and easy to use tool. |
| 2009/1/7-12 [Computer/SW/Languages/Java, Computer/SW/Languages/Perl] UID:52334 Activity:nil |
1/8 I have several old CS books that I want to get rid of, just in time for
the new semester. If someone from the CSUA wants to pick them up for
the CSUA library or for themselves, contact me. I don't have a list
handy but they include the dinosaur book, dragon book, some crappy
EECS122 networking book, an intro to Java book that was used in 61B,
and a few others. I'm keeping my Programming Perl book but might get
rid of K&R ANSI C as well. --abe
\_ More books for our library! You're in Cupertino, right? I wonder if
Steven might be close enough to pick them up. He may already be back
in Berkeley, though. --t
\_ work in Cupertino, live in SF (Haight/Ashbury). Here's what I
could find (I have another box of maybes somewhere, includes
an^H^Hthe ANSI C book and Design Patterns):
computer networks 1558603689
java language specification 0201634511
java how to program 0132634015
operating system concepts "dinosaur" 0201591138
DBMS 0070507759
\_ If you'd like me to pick stuff up, I can come to
Cupertino. Email vp@csua if so inclined. |
| 2008/11/26-29 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:52111 Activity:nil |
11/25 Yargh! They sank the wrong pirate ship!
http://news.yahoo.com/s/ap/20081126/ap_on_re_as/as_piracy_1
\_ Oh shit!
\_ duh, work with indian java monkeys sometime.
\_ That's stereotyping! Other language (C, C++, Perl, etc.)
monkeys are also the same.
\_ The boat was taken over by pirates! Now no one needs to worry about
paying ransom. Why didn't they think of this earlier? Oil prices
and environmental awareness are too low as it is. Fire away! |
| 2008/7/14-16 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:50557 Activity:moderate |
7/14 Shell Programming question: I want to call a script with 1 arg
and have it figure out whether $1 is a MAC address or an IP address
and then do call the appropriate function. What is the best way
to do this, given that sh/bash/ksh do not have something like
the =~ in perl. Check for exit status of grep, or is there a
a better way? For the moment, let's just say the two tests are:
echo $1 | fgrep : > /dev/null && echo isMAC || echo notMAC
echo $1 | fgrep . > /dev/null && echo isIP || echo notIP
and if neither, then Usage()
I want to avoid requiring the user to either do "-i IP" or "-m MAC".
Note: this doesn't have to do extensive syntax checking ... it's
not a security application. Just trying to save typing.
\_ You may want to recheck your assumption of bash not having =~.
\_ Thanks for that information. I didn't know know about that.
Although right now it is in sh. Any portable pure sh ideas?
I'm really interested in what is the "right" way to do this,
rather than just coming up with something which works.
\_ "right" depends on your situation. If you actually need
to support old systems, or be portable across many systems,
then maybe you should stick with sh. If you know your
audience is all going to have bash or whatever (and that
is not at all unlikely these days), then I see no good
reason to suffer under older, less capable tools.
\_ Dude, it's a sh script. If it works, it works. Seriously.
Stick it in a function if it looks too ugly and then forget
about it. If you need something to be maintainable or
it's a called enough there is any concern about it being
too slow you are going to have to bite the bullet and use
a reasonable scripting language. Otherwise just make it work
and move on to something that is worth spending time on.
\_ I think "right" in this case, means readable and maintainable
by the next poor guy that has to come along. Just document
your code and you will be fine.
\- I think one way to distill the question is "how do i get =~
in sh" ... would you do "echo $string | egrep <regexp>" + $?
to get exit status of the grep ... I think the case approach
below is nice and clean as long as you are ok with something
like *:*:*:*:*:* for MACs and *.*.*.* for IPs, and dont need
"true" regexps.
"true" regexps. I wouldnt use awk to test, but maybe if you
need to mangle.
\_ Why would you do this in a shell progam?
\_ use case:
found="NO"
case "$1" in
*:*) echo "isMAC"; found="YES";;
*.*) echo "isIP"; found="YES";;
*) if [ "$found" = "NO" ] ; then
echo "NOT MAC" ; echo "NOT IP";
fi
;;
esac |
| 2008/6/18-22 [Computer/SW/Languages/Perl] UID:50292 Activity:nil |
6/18 Anyone reccomend a simple way in perl to detect an animated gif? |
| 2008/5/28-31 [Computer/SW/Languages/Perl, Computer/SW/Languages/Misc] UID:50069 Activity:nil |
5/28 dreamhost tells customers to quit complaining about email and just
use gmail
http://www.informationweek.com/blog/main/archives/2008/05/huge_web_hostin.html
\_ search for dreamhost on motd. sucky suck.
\_ http://csua.com/?entry=45409
http://csua.com/?entry=45383 |
| 2008/4/29-5/5 [Computer/SW/Languages/Perl, Computer/SW/Languages/Python] UID:49852 Activity:moderate |
4/29 Scaling your web app in the real world:
http://teddziuba.com/2008/04/im-going-to-scale-my-foot-up-y.html
\_ This article is crap. While yes, 99.9% of all websites don't
need any serious scalability plans, if any of them become worth
anything they will need to scale. If you write a web application
without careing about scalability you are writing a webapp that can
never be more than niche. Any developer should know where the
next few scaling bottlenecks live in his application and have some
basic plan for how to solve them when they become an issue.
\_ I feel the same way about language Nazis. "Java is the best!"
"No C is the best!" "Perl sucks it's not readable!" "Python rules!"
Dumb asses blame the language and not the stupid programmers.
\_ Different tools for different jobs. That said, I particularly
like python. Its syntax is very clean.
\_ I don't know python. I like Pascal the best, although I
haven't used it in 18 years.
\_ If you liked Pascal, you will love python, unless you
get hung up on the fact that blocks in python are
defined by indentation rather than by "begin/end"
\_ Yeah, I like python, but that blocks by indentation
thing drives me up the wall. Couldn't they at least
make it optional? -!pp
\_ My experience is that Ruby is a lot cleaner than Python, and
doesn't have stupid syntactical whitespace. However, I have
only used Perl for stuff at jobs etc due to familiarity.
Python's object orientedness was less complete than Ruby's
and I definitely don't like the indentation thing.
\_ I struggled, trying to like Python. Then I found Ruby and
it's the most fun I've had programming in a *long* time.
The fact that regexes are as easy as Perl in Ruby was a big
deal.
\_ Ruby is whitespace sensitive. -- ilyas
\_ Far less so than Python.
\_ I am not a huge python fan, and I don't like python's
whitespace indentation, but I found ruby's specific
whitespace sensitivity far more confusing. -- ilyas
\_ Interesting, I've never noticed a problem.
\_ Perhaps this is because you are not used to
programming with closures (blocks are
the closest thing in ruby to closures).
Ruby blocks have very odd whitespace
requirements:
(1..3).each {|x| puts x} works
(1..3).each {|x|
puts x} works
(1..3).each
{|x| puts x} does not work.
-- ilyas
\_ No, I use closures, just never have had to
break across the line.
\_ I write fairly hairy closures sometimes,
and often my closure code is nested.
I find this behavior completely bizarre
and unintuitive. I can't even imagine
why Ruby would insist on this. -- ilyas
\_ I got yer hairy closure right here,
pal.
\_ This is funny, but not really applicable to real world scaling.
I have been doing this stuff for 15 years and scaling is more of
a system architecture and capacity planning issue than a developer
issue. Of course, if your code is bad enough, no one can make
it scale.
\_ I disagree completely. I've taken courses on optimizing
applications for performance and the best bang for the buck
is almost always received by altering the code to run
faster. Sure, things like high-speed interconnects to reduce
latency can solve problems not easily solved by modifying
code, but the majority of problems are developer issues that
they (I would say unknowingly, but maybe because they don't
care) foist upon the systems people.
\_ Most cases of performance scaling problems I have encountered
have been due to the volume of data being written to disk.
These problems can be fixed by using the right RAID type,
better use of filesystem caching, a better filesystem, or
most often, simply by throwing more disks at the problem.
These are not the kinds of issues I would expect a programmer
to know or even care too much about. I haven't "taken courses"
on it, but I have worked on numerous overloaded web and
application sites in the Real World.
\_ Sounds like you have haven't encountered a large
variety of problems then. Often when a developer
profiles his code he can find all sorts of
bottlenecks. Often it seems easier to throw h/w at
problems, but the biggest gains come from writing
better code. For instance, don't write so much data to
disk or be smarter about how you do it. You are
correct that programmers don't know and care about
these issues, but they should. They usually only care
when they are forced to because their code doesn't
meet requirements, because it compares unfavorably to
competing code, or because the hardware solution has
failed or is too costly to implement.
\_ "In nearly every case the most serious bottleneck
is an overloaded or slow disk." -Adrian Cockcroft
Sun_Performance_And_Tuning (Ch 1, Paragraph 1)
\_ You ever wondered why Google search is so fast?
They have the world's largest RAM disk. They
index and keep most of their search data
***IN MEMORY***. Last time I attended a talk
I learned that they have more a shitload more
RAM than many corporations have on disk. It
is ridiculous.
\_ Thanks for making my point.
\_ Well no shit, but this is tangential. The
question isn't "Is disk slower than RAM?". It
question isn't "Is disk faster than RAM?". It
is "Is there a way to do this such that it
doesn't write to disk as much?" One example is
when developers decide to write 6 million
small files in one directory and the filesystem
bogs down. Sure, you can buy a faster
filesystem but that's correcting the symptom
and not the problem. You don't need to buy $$$
hardware that probably still can't handle that
particular issue if the code didn't do something so
stupid.
\_ I heard reiserfs is really good at storing lots
of little files.
\_ I heard reiserfs is really good at storing lots of
little files.
\_ unfortunately, it stores them in a dumpster
in San Leandro.
\- lexis/nexis was pretty fast at seearch +20 yrs
go. the old bell labs people [who after all were
working for a phone company] have lots of
interesting stories about optimizations for
various phone company applications. one of
the main altavista people wrote some code to
use a cache that was physically closer to a
processing unit to avoid die-crossing latency
[and had numbers to show the difference it
made]. google is mostly read data and it's not
authoritative but a cache/copy for much.
contrast this with say ebay. for a somewhat
interesting discussion of scaling look at
randy shoup's presentation/talk on ebay scaling.
[trivia: randy was a high school acquaintance of
mine. i thought he was going to become a lawyer
and i was mighty surprised he went into cs/
databases].
\_ Getting all your caches right is not really
a developer responsibility, but I admit that
it starts to cross disciplines. Most people
are just sort of confused how it works, so
in this case, the one eyed man is king.
\_ Whose responsibility do you think it is
if not the developer? If he doesn't
have the knowledge then he needs to
consult with someone who does, but
he's the implementer. Too often the
developer has no idea, doesn't ask
anyone, and implements something stupid.
\_ I guess I would have to say that it
is a shared responsibility between the
system architect and the developers.
A lot of times developers don't know
what is possible, especially what is
possible at a reasonable price point.
How big a RAM disk cache can you expect
to have available for your application
in a shared disk array? How would a
developer hope to possibly know that?
But far too often system administrator
types don't share this kind of info,
even if they do know it themselves.
\_ I would argue that developers
should know what they don't know -
or at least consider these issues
early (before they become a problem).
Part of the problem is that people
with systems knowledge often come
into the project late in the
development of it - too late to
make major changes. We see this
problem in spacecraft operations.
The hardware guys build a shiny new
spacecraft without consulting with
the people who are going to fly it.
They make "sound technical decisions"
and h/w design decisions that are
intended to save lots of money, but
they have no knowledge (or, worse,
just enough to hang themselves) about
how to operate the h/w they build.
This often ends up being a case
of saving $$ on the h/w and spending
$$$$ on the operations (or not being
able to operate at all - or with
greatly increased risk). The *good*
h/w guys know who to involve early in
the process and why, but they are a
small minority even in large,
experienced companies like Lockheed.
With scaled systems it's rather
the opposite. The s/w guys design and
build a system without considering
h/w (or the systems environment).
\_ I had that exact problem at one place (millions
of files in one directory). We talked about
various ways to fix this and decided that
switching from WAFL to VxFS was the best
solution. In some ways this was just because
the developers were too lazy to figure out how
to use a database, but it worked.
\_ Why not spread those millions of files
over many directories? In itself that
helps a lot and it's a simple fix. A
database is another idea. Switching
filesystems sounds pretty drastic to me.
\_ It was already hashed, so what we really
had was billions of files, millions in
each directory. There is no magic bullet
for dealing with that quantity of data.
Millions of directories is not really
a good solution either, for reasons that
should be obvious. By the time I left
the company, they had started work on
what was essentially their own filesystem
but I don't know what happened to that
project.
\_ What a disaster. This sounds like poor
s/w design.
\_ All that because the devs don't want to
figure out how to use a db?
\_ Yeah, well it was 1999 and good
developers (or sysadmins) were hard
to come by. The new filesystem I was
referring to had a DB included.
\_ You think they are easier to come
by now? If anything, it
seems to be getting worse as
a lot of Microsoft-trained,
Java-loving weenies have
entered the field and very
few hardcore assembler-loving
PDP-11 weenies still exist.
Over time it seems the
average developer/sysadmin
knows less and less about
the details of the systems
in favor of high-level constructs
like WWW and GUI design. There's
a place for both, of course,
but I am horrified by what
recent CS grads do not know.
\- I disagree as well. Some simple problems are solved by
throwing money at them ... say $20k - $100k problems.
But at some point programmer time does become cheaper than
cycles, space etc. And there are other cases where the best
hardware cant do what brainpower can. Trivial example are new
crypto attacks. Another case is reading 10gb traffic streams...
you cant just naively throw hardware at the problem. It's
combination of hardware [ASIC, FPGA other specialized network
devices], OS/kernel/devce driver hackery, and application
design.
\_ Any network with 10gb of traffic on it that cannot be easily
broken up is not scalable.
\- what you control may affect your options. we want to
do IDS on 10G. We cant tell say ESNet to tailor bandwidth
provisioning around IDS. What we can ask for is $ for
hardware as long as we're not being stupid about it.
The "web application scaling" is a different problem
than some other scaling issues ... something like the
LHC has different scaling issues, for example. |
| 2008/3/4-7 [Computer/Networking, Computer/SW/Languages/Perl] UID:49324 Activity:moderate |
3/4 Does anybody have some code or know of a program that will take a
network/mask and return the list of address in that CIDR block?
e.g. "iplist 10.10.10.0/24" and return 10.10.10.0 ... 10.10.10.255
[I have a way to do this, but it involves distributing a large
amount of code, which is kind of a hassle. Looking for something
lightweight and either standard or easdy to rpm/port/yum install.]
\_ shouldn't be hard to do, its all bitwise binary math.
\_ Because I was interested in how to do it in perl, I hacked up
some quick code. ~mehlhaff/netmask.pl for your enjoyment. -ERic
\_ there are couple out there. The one I settled on is sipcalc
\_ Thanks for the pointer. I only knew about the "builtin"
ipcalc. I see sipcalc return the "usable range" in the
form 10.10.10.1 - 10.10.10.254. Is there a way to get
it to return each of the 254 addresses, one per line, which
can be piped to another program's stdin etc.
\_ doing it in perl? Net::IP http://search.cpan.org/dist/Net-IP/IP.pm
\_ doing it in perl? Net::IP
http://search.cpan.org/dist/Net-IP/IP.pm
\_ look at nmap code
\- i thought the nmap code was somewhat hard to understand
[this was maybe 2yrs ago]. however, you can steal this
exact function and parser from a modern version of fping
which supports the "-g" flag. nevertheless, i'd be interested
in a real standalone untility for this. starting with fping,
this is do-able in like 30min [you can also do it in 2 lines
if you want to do this in a stupid but perfectly workable way].
it would take me a lot longer to extract this from nmap. --psb
./fping-psb -n -g 10.10.10.0 10.10.10.56 | wc -l
57
./fping-psb -n -g 10.10.10.0/30 | wc -l
4
\_ I wrote a script last year that basically produces the same output
as psb's solution. My perl vs. mehlhaff's perl. Round 1: Fight!
~dbushong/bin/expand-ip-range --dbushong
\_ dbushong is definitely sexier than mehlhaff. meh!
\_ Hah, oops. Mine only expands the last two octets. (i.e. doesn't
do anything useful for /n where n < 16) Ah well. --dbushong
\_ clever code vs. simple code w/comments. Two very different
styles to accomplish the similar things. It is left as a
exercise to the student to decide which they like better. -ERic |
| 2008/2/11-14 [Politics/Domestic/President/Clinton, Computer/SW/Languages/Perl] UID:49115 Activity:nil |
2/11 Clinton's campaign manager replaced with a perl script. News at 11. |
| 2008/1/14-18 [Computer/SW/Languages/Perl] UID:48942 Activity:nil |
1/14 My perl foo is weak. What's a simple elegant way to write the content of
$result to the file $filename? Thanks!
\_ open(FILE,">$filename");print FILE $result;close FILE; -tom
\_ Added a $ in the right spot
\_ Depending on what you're doing: perl's print default to STDOUT, so
you can also just print $result; and then run your script from the
command line as: foo.pl > file. When doing the open() you also
probably want to test that the open succeeded. You may not have
perms on the file, you may have typod the path, etc.
\_ Dependin on how complex $result is you can also do shell escapes
in perl. I.e. system "echo $result >> $filename";
\_ Not exactly elegant when the real solution fits in about 1/2
again as many characters. |
| 2007/10/22-25 [Computer/SW/Languages/Perl] UID:48415 Activity:nil |
10/22 I want a perl regex that reduces 2 or more consecutive newlines to
2 newlines. perl -pe 's/\n\n(\n*)/\n\n/gms' doesn't work, and I
don't understand why. Any ideas?
\_ You're reading your input one line at a time. Try this:
perl -0pe 's/\n\n+/\n\n/g' --mconst
\_ Are they just \n's or are they \n\r's? |
| 2007/10/20-24 [Computer/SW/Languages/Perl, Recreation/Pets, Computer/SW/Languages/Misc] UID:48397 Activity:nil |
10/19 I'm the op who threatened to delete dog posts using my super
script. I didn't actually write one, but I did trick you guys
into posting dog shit amonst others. Boy, that was fun!!!
\_ POODLE! (super script? It's a few lines of perl... ARF!) Maybe
you need a nice lab: someone who can keep up with you. |
| 2007/9/23-24 [Computer/SW/Languages/Perl, Computer/SW/WWW/Server, Computer/SW/Languages/Web] UID:48152 Activity:kinda low |
9/23 I have an Apache question:
If I have a directory which allows both CGI handler and Perl
handler (mod_perl) how can I tell which is being invoked by the
web server? The scripts are being executed, but I have no idea if
mod_perl is running correctly or if the CGI Handler is just
picking them up and running them. How can I tell?
\_ If you like wasteful suburban living, chances are you don't
need to know if they're running. They're all magically taken
care of by other tax payers, like freeways and support systems
for your big suburban mansion.
\_ http://modperlbook.org/html/3-10-How-Can-I-Tell-if-mod_perl-Is-Running.html
\_ http://urltea.com/1khw (modperlbook.org)
Also you're supposed to get a 50X performance difference so try out
a bunch of your own DoS clients and see the latency or something.
\_ http://www.perlmonks.org/?node_id=377648
Check the http header! Look for:
HTTP/1.1 200 OK
Date: Tue, 27 Jul 2004 07:10:54 GMT
Server: Apache/2.0.48 (Unix) mod_perl/1.99_13 Perl/v5.8.0 PHP/4.3.5 <=== !!!
...
\_ I do not think this is valid for RHEL, which loads mod_perl
as a .so. Certainly my server does not say this and yet it
certainly does not complain when it loads the module. RHEL
installs apache as an RPM and mod_perl as another RPM, so I
don't think the apache ID string reflects reality. My
question is not really "Is mod_perl installed?". I am sure
it is. The question is "How do I know that my configuration
is working the way I want it to, with mod_perl handling the
.pl scripts instead of .cgi?" |
| 2007/9/18-22 [Computer/SW/Languages/Perl] UID:48097 Activity:nil |
9/18 What does "qq/.../" in Perl mean? I don't want to ask my "leet"
stuck up co-workers because they'll think I'm an idiot. Well
maybe it's already too late but whatever. ok thx.
\_ 2 q's mean same thing as double-quote. Now for the bonus question:
what does "q/.../" mean?
\_ Please don't do other people's homework.
\_ Why not? We're old.
\_ man perlop |
| 2007/9/10 [Computer/SW/Languages/Perl] UID:47986 Activity:low |
9/10 Hi. I'm running a package based linux distro. Should
I install perl CPAN modules through the provided packages,
or through sudo cpan> install modulename etc ?
Opinions?
\_ Depends on the package system you're using, you may have to
deal with both. I had an experience where I installed via
CPAN because the packaged version was older than what I needed.
Later, I installed an RPM via yum that installed the CPAN module
package, causing it to be downgraded and breaking my app. |
| 2007/8/24-27 [Computer/SW/Languages/Perl] UID:47746 Activity:nil |
8/24 perl 5 slash fiction:
http://tinyurl.com/2ouhb2 |
| 2007/8/22 [Computer/SW/Languages/Perl] UID:47707 Activity:nil |
#!/usr/local/bin/perl
of choices out there with different tradeoffs. of choices o\
ut there with different tradeoffs. |
| 2007/8/20 [Computer/SW/Languages/Perl] UID:47665 Activity:nil |
#!/usr/bin/perl Oakland police put the main suspect in the killing of a journalist investigating\ Your Black Muslim Bakery in an interrogation room with the bakery's leader afte\ r the two were arrested, then left them alone and didn't record the conversation\ , sources close to the case said Friday. |
| 2007/8/13-15 [Computer/SW/Languages/Perl] UID:47608 Activity:very high |
8/13 Is there a unix command to print the full filesystem path of
something? e.g.
% pwd
/home/troll
% print-full-path drivel
/home/troll/drivel
\_ function print-full-path { (cd "$1"; pwd); }
Implementation as a csh alias left as an exercise.
\_ that doesn't work... $1 could be a file
\_ You need something like:
FDIR=`dirname "$relpath"`
FBASE=`basename "$relpath"`
FABS="`cd \"$D\" 2>/dev/null && pwd || echo \"$D\"`/$B"
\_ christ. ok the answer is "no, you need a script".
\_ which foo
\_ Ok here's my little perl script for this, if anyone cares. -op
\_ locate foo
whereis foo
find `pwd` -name foo -maxdepth 1
echo `pwd`/foo
\_ that last thing would work but I wanted symbolic links
\_ `pwd`/foo would work but I wanted symbolic links
and relative paths converted to absolute paths.
The others don't work in general.
\_ Here's my perl script for this, if anyone cares. -op
#!/usr/bin/perl
chop($cwd = `pwd`);
foreach $arg (@ARGV) {
chdir $cwd;
chop($rel = `dirname $arg`);
chop($base = `basename $arg`);
chdir $rel || die "path not found: $rel\n";
chop($full = `pwd`);
print $full;
print "/" if ($full ne "/");
print $base if ($base ne "/");
print "\n";
}
\_ Look up chomp() as a chop() replacement for removing \n. |
| 2007/8/7-13 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:47555 Activity:nil |
8/7 I'm trying to figure out whether it's possible for get wget to
authenticate to a web page protected by a login form ('post'
method to send username/pass, and cookies.) Cookies don't seem
to be the problem, with --save-cookies and --keep-session-cookies
but getting the username/password submitted isn't doing it. On
this particular page, getting to a link, let's say 'example.aspx',
redirects to 'login.aspx?href=/example.aspx'; login.aspx is a
standard http form. Anyone ever get this working? -John
\_ You want a single wget command or are you scripting this?
If scripting just hit the logon page first to get your cookie.
Otherwise you have to recognize you've been redirected.
\_ Why wget? Have you tried curl?
\_ I've been able to get this working using wget's CLI options
--user=[user] and --password=[passwd] or by posting the
right form elements for authentication.
\_ Yeah tried both, no good. Curl sounds like it might
work, though. Thanks. -John
\_ If curl doesn't work for you, I've done this in perl before. It
isn't that hard with cpan's lwp, cookie libraries, etc.
\_ Or if you hate Perl, Ruby does a good job too.
\_ Curl works for submitting the credentials, but I'm having
trouble with cookies; the site issues 4 for a normal
browser login, but with curl I only get one. I'll keep
plugging. -John
\_ How can you hate perl for a hack script like this? |
| 2007/8/1 [Computer/SW/Unix, Computer/SW/Languages/Perl] UID:47500 Activity:high |
8/1 perl/sed/awk/etc question:
Is there a good way to change every other delimiter or string
match? For example change a colon delimited list to a :+, one...
Apple:12:Pear:2:Orange:9:Plum:7:Banana:22:Mango:2 to
Apple:12,Pear:2,Orange:9,Plum:7,Banana:22,Mango:2
(And I dont mean a trick that relies on some fields being
alpha and some numeric or only a known number of fields).
\_ How 'bout the straightforward approach
s/([^:]+:[^:]+):/$1,/g
\_ That didn't work?! Am I doing something wrong?
echo Apple:12:Pear:2:Orange:9 |sed -e 's/([^:]+:[^:]+):/$1,/g'
Apple:12:Pear:2:Orange:9
\_ use perl, sed will kill you with quoting.
\_ Thanks! perl -pe ... does it!
\_ One more question, why is there a differene between : and |?
I now need to use |.
echo "Prog 1:61.3:Ch 2:91.0:Num3:83.4" |perl -pe 's/([^:]+:[^:]+):/$1,/g'
Prog 1:61.3,Ch 2:91.0,Num3:83.4
echo "Prog 1|61.3|Ch 2|91.0|Num3|83.4" |perl -pe 's/([^|]+|[^|]+)|/$1,/g'
Prog 1,,|61.3,,|Ch 2,,|91.0,,|Num3,,|83.4
First one works. Second does not.
\_ man perlre, search for | |
| 2007/7/31 [Computer/SW/Languages/Perl] UID:47482 Activity:nil |
7/27 I just wrote a perl script to delete your puppy bullshit |
| 2007/7/6 [Computer/SW/Unix, Computer/SW/Languages/Perl] UID:47196 Activity:high |
7/6 my google fu is weak. How do I match EOF ( tr or perl or sed or any
linux tool that will do substitutions in a file)? thanks.
\_ What are you trying to do? |
| 2007/6/15-16 [Computer/SW/Languages/Perl] UID:46958 Activity:nil |
6/15 Haha - Perl using Vista voice recognition
http://tinyurl.com/2td2y3 -John |
| 2007/5/1-4 [Computer/SW/Languages/Perl] UID:46497 Activity:nil |
5/1 Oops, Tenet's a big fat liar. He claims that he ran into Perle the day
after 9/11 and Perle said that Iraq had to pay. Problem is, Perle was
out of the country and couldn't get back until 9/15
http://weeklystandard.com/Content/Public/Articles/000/000/013/593daqmw.asp
\_ Do you think Perle didn't say that?
http://thinkprogress.org/2007/04/30/perle-five-days-after
Is Tenet a liar and Gonzales not?
Is Tenet a liar and Gonzales not? -scotsman
\_ There's a difference between saying "Iraq has to pay for what
happened yesterday" and saying "there are links between OBL and
SH". Oh, and Gonzales is either a liar or an incompetent. -op
\_ So, again, you don't think "Iraq has to pay for this" or
something very close came out of Perle's mouth in Tenet's
presence?
Also, as those "links" were included in the authorization
to attack Iraq, do you honestly think you can call that a
distinction with a difference?
Also: http://edition.cnn.com/TRANSCRIPTS/0109/16/en.00.html
Let's look at the full transcript.
Even if we cannot prove to the standards that we enjoy
in our own civil society that they were involved. We
do know, for example, that Saddam Hussein has ties
to Osama bin Laden. That can be documented.
So, on the theory, which seems to be a valid one,
that if you support terrorists and they then commit
atrocities against Americans, you are responsible.
Unless we hold those countries responsible, we will
be chasing terrorists without significant effect.
So.. Iraq is responsible, and we must hold them responsible.
Still think there's a difference? -scotsman
\_ Not to mention that Perle was a signatory to the PNAC
letter saying we should attack Iraq back in January 1998.
http://www.newamericancentury.org/iraqclintonletter.htm.
(Note that letter doesn't mention bin Laden or terrorism:
9/11 was just a convenient excuse to do what they wanted
to do anyway). -tom |
| 2007/4/13-16 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:46288 Activity:kinda low |
4/12 Just finished a programming quiz. Do you think critizing the test
was OK? They wanted someone to write code for something that could
be done via shell aliases. This was at Riverbed.
\_ I assume Riverbed is a company and this was an interview? If so,
I think this kind of criticism is a great thing to do. It shows you
really know your stuff if you can do both. If they count that
against you they are idiots and you don't want to work there anyway.
\_ this was actually after the phone screen. Probably not a
good sign. Or maybe the manager's worries too much.
\_ IMO, the right way to handle something like this is to say, "Oh,
this would be really easy to do with shell aliases, and I can show
you how I'd do it that way after I write the code to do it..."
-dans
\_ It makes you think twice about their ability to create well
architected code if they cant come up with a good quiz; especially
considering what is already out on the net. I have seen too many
cases these days crafty perlers who write terrible code. Knowing
what $_ means does not you are good engineer or coder.
\_ Jesus christ you are an idiot. A programming quiz is not
real work. It is a way of saying "prove to me you can do
basic tasks in this language." Making it a simple problem
means it is something you can actually have someone write
in half an hour or so. Most simple tasks are probably easier
to do with a shell script than with a real program. So what.
That's totally orthogonal to the tester's goal. Oh and I'd
almost take dans's advice. Start with answering the problem
the way they asked and then mention, as an aside, not a
critisism, something like "you know, if this was something
I had to solve at work I'd probably just do x instead."
You don't come across as too good for the test (which looks
very bad, lots of otherwise good engineers are a disaster
because they don't work well with others), you show you know
your mad shell skillz, and you are letting someone know that
you know to use the right tools for the right job. I've seen
people rewrite stuff like find | xargs grep because they
didn't know diddly about unix. That kind of stuff is never
pretty.
\- sort of the flip side of this, for a sysadmin interview,
i've asked questions like "how would you generate a 10
random numbers between 1-100 from the shell", "how would
you generate the numbers 1-100 from the shell" etc and
people who would do it in C are slightly missing the point.
people who would do it in C are sort of missing the point.
i mean it is fine to say "i dont know how i would do it from
the shell, but here is the 5line C program, that took 2min
to write", but to say "that's dumb to do from the shell"
will not serve you well. yeah, there are a lot of people
unfamilar with xargs, mapcar, apply, lambda ...
while riverbed may be in an inflationary phase, i suspect
they are still small enough that they are being careful
about who they hire. the OP had an interesting quandry
whether to not to de-anonymize himself on the motd ... if
he's an active member of the sloda community he faced either
a "oh i dont know about his technical chops, but he seems
pleasant enough" to "i havent seen his code, but he seems
like a dumbass" ... given that various people here have
various riverbed connections.
various riverbod connections. |
| 2007/2/5-7 [Computer/SW/Languages/Perl, Computer/SW/Languages/Misc] UID:45654 Activity:nil |
2/4 Help UNIX experts. I setup a crontab and it keeps outputing
crap. The cron is as follows:
0 4 * * * /bin/sh -c "cd mydir; tryit.pl 2>&1 > /dev/null"
The error/email I keep getting is as follows, what does this mean?
"stdin: is not a tty"
\_ Check to see if "mesg y" is set anywhere. Disable that.
\_ Instead of mushing about running /bin/sh to get a 'cd', I would
put the 'cd' as part of the perl script and run that directly
with a full path: 0 4 * * * /myhome/tryit.pl 2>&1 > /dev/null.
Also, since this appears to be new code you might want to let
cron mail you any output instead of devnulling it, at least for
the first few runs.
\_ This suggests your script is doing something that looks at stdin.
Normally when you run the script from commandline, you are on a tty.
Things run from cron arent. One way to test the different operating
environment is to ssh into soda without a tty, and test. Try
'ssh soda /bin/csh -i' and try running your command. That will
start a tty-less shell. -ERic |
| 2006/11/10-12 [Computer/SW/Languages/Perl] UID:45314 Activity:nil |
11/10 perl question: I want to bind the result of a pattern match on one
variable to another variable. I constantly find myself doing something
like:
$myvar1 = $long_string;
$myvar1 =~ s/.*(regex.*)/$1/g;
and it seems silly to do an assignment followed by a modification.
Am I missing something? Is there a way to do this in a single step?
\_ Not a good way. One of the things ruby fixes and that they're fixing
in Perl6. You can do: ($myvar1 = $long_string) =~ s/.*(regex.*)/$1/g;
but since you're being a good little perler and using strict, you'll
still need two lines since you need my $myvar1; in there somewhere
\_ (my $myvar1 = $long_string) ... ?
Now mconst will explain how there's an even better way.
--dbushong
\_ Not to nick pick but what's wrong with two lines? There's a fine
line between convenience and readability. In either case regex in
Perl is 100X easier to code and read than Java/STL/Python.
\_ there's always the match, then assign...
$long_string =~ /.*(regex.*)/;
$myvar1 = $1; |
| 2006/10/25-27 [Computer/SW/Languages/Perl] UID:44961 Activity:nil |
10/25 I recall there being a really quick easy perl way to do global
replace from the command line, but I can't seem to quite get it
right. Something like:
perl -e 's/pattern/replace/' file.txt
Help?
\_ I know how to do it with sed:
sed -e s/pattern/replace/g file.txt > /tmp/output.txt
\_ modern seds support perl's -i syntax as shown below:
sed -i -e s/pattern/replace/g file.txt
\_ perl -pi -e 's/pattern/replace/' file.txt
(You need the -pi) |
| 2006/10/6-7 [Computer/SW/Languages/Perl, Computer/SW/Languages/Python] UID:44706 Activity:moderate |
10/5 Python experts, help. I'd like to do the following Perl regexp
and reg substitution equivalent in Python, what's the best way?
$line=~s/hello/world/i;
if ($line=~/(foo\w+)/) {
$myfoo = $1;
} elsif ($line=~/(bar\w+)/) {
$mybar = $1;
}
My limited Python knowledge says I must do the followings which
seems really awkward:
import re
...
matchFoo = http://re.compile('(foo\w+)')
matchBar = http://re.compile('(bar\w+)')
m = matchFoo.match(line)
if (m):
myfoo = m.group(1)
...
\_ I don't know Perl so I'm not sure what you are trying to do,
maybe this link will be of some help:
http://gnosis.cx/TPiP -scottyg
\_ One of the reasons I gave up on Python and love Ruby is that Ruby
has OO but maintains the nice regex syntax of Perl.
\_ Its OO is also a lot cleaner and more consistent than Python's,
and none of this indentation-is-important i-can't-paste-code
bullshit
\_ Yeah, those would be some more of the reasons.
\_ I don't know python, but this would be the equivalent, AFAICT:
import re
line = re.sub(r'(?i)hello', 'world', line)
m = re.search(r'foo\w+', line)
if m:
myfoo = m.group(0)
else:
m = re.search(r'bar\w+', line)
if m:
mybar = bm.group(0)
--dbushong
\_ Now I remember why I never learned python. |
| 2006/10/4-5 [Computer/SW/Languages/Perl] UID:44658 Activity:kinda low |
10/3 Does anyone know why using DB_File in perl would suddenly stop working
and start storing only blank entries into the DB?
The code is something like this (there can be multiple instances of
this perl script running hence the lockfile)
open (LOCKFILE, ">lock_file");
flock (LOCKFILE, $LOCK_EX);
dbmopen (%PERLDB, db_file, 0666)
set values in %PERLDB
flock (LOCKFILE, $LOCK_UN);
close (LOCKFILE)
dbmclose (%PERLDB);
So once in a while if I set a value in %PERLDB it just sets it to
blank (nothing) instead of the right value. I've tried checking the
value afterwords, and setting it over and over again until it sticks,
but that eventually leads to Too Many Files open. Is there a way
to check file handle leaking in perl? I don't see a place where I'm
opening a handle without closing it in my script ...
\_ You need to do the dbmclose before you unlock the lockfile.
\_ good catch
\_ Maybe you're hitting a race condition between the open() and the
flock(). -tom
\_ I think so too if that's what the code actually looks like.
OP, why do you open()/close() the lock file at all? Why not
just lock/unlock it? Can you show us the actual production
code block?
\_ I commented out the flock and opens and the problem didn't
go away. It turns out the open was a braindead way of making
sure that file existed, I'll fix that too.
\_ Without locking and multiple instances of this code
running I would expect Bad Things(tm) to happen. You do
want locking of some sort. You don't need the open().
I'm left wondering if your file is randomly named or is
really the static "lockfile" in your code. Again, if you
can post the real production code you'll probably get
better help than this sort of vague hand waving.
\_ Actually I take what I said back, the flock/open
is correct, at least according to examples on how
to lock a file. How do you do a flock on a file
that you haven't opened?
\_ My error. In perl you do have to open the file
to get a filehandle for flock. Anyway, perl
relies on your OS's underlying locking mechanism
which may not even exist and you should really
be testing the return value, not assume it has
been successfully granted a lock. If you test
the return value you may find you're not getting
a lock which is why your code behaves the same
with and without the flock(). |
| 2006/9/14-16 [Computer/SW/Languages/Python, Computer/SW/Languages/Perl, Computer/SW/Languages/C_Cplusplus] UID:44378 Activity:kinda low |
9/14 http://www.salon.com/tech/feature/2006/09/14/basic I never knew C++ was a higher-level language than BASIC \_ It's salon. So what? \_ More specifically, it's David Brin, who writes decent hard sci-fi. Too bad he apparently didn't get a decent computer education either. \_ More specifically, it's David Brin, who writes decent hard sci-fi. Too bad he apparently didn't get a decent computer education either. [formatd] \_ Still doesn't bother me. He's a fiction writer, not a scientist. \_ A friend of mine was in a technology-related tv show with David Brin, and reports that he's pretty technically naive / clueless. I do like his books, though. - niloc \_ It doesn't bother you that he's saying "the problem with doing X w.r.t educating our children is that <incorrect fact>"? \_ Not at all. It's a slate article online, not an official publication from anyone who has anything to do with education. I give it the weight it deserves: zero. \_ I once read an article by a tech analyst which said the internet was invented in year 1991. \_ Wow that guy is a total idiot. Everyone knows it was the year 1991 when they invented the 1nt@rw3b!1. \_ Quick, someone tell that man about ruby/python/scheme/whathaveyou \_ He already discarded Perl as "too high level" He doesn't seem to understand that crappy != "low-level" \_ He mentions Python os well, and calls C++ "high-level." |
| 2006/8/17-19 [Computer/SW/Languages/Perl] UID:44038 Activity:nil |
8/17 Any movabletype experts on soda? When I try to create an entry
on my blog I get a huge perl process and 'Out of Memory!' in my
error log. The post appears in an individual archive but not on
the main page. Thanks! -sameer
\_ Maybe the post is generating an E_HOTAIR. |
| 2006/8/16-18 [Computer/SW/Languages/Perl, Computer/SW/Languages/Misc] UID:44021 Activity:nil |
8/16 Having some trouble with jhead, maybe someone has an idea: I have
a large number of pics with no EXIF creation date, but a correct
file modification date. jhead lets you set the modification time
to the same as the creation time, but I can't figure out how to do
it the other way around--any ideas? Thanks. -John
\_ Doesn't look like it'll do it. I wrote a script to do this:
~dbushong/bin/filedate2exif
\_ Many thanks, I'll try this. -John
\_ for i in ...
do jhead -ts perl -MPOSIX -e "print strftime(\"%Y:%m:%d-%H:%M:%S\", l\
ocaltime((stat(\"${i}\"))[9]));" ${i}
done
\_ Embed the timestamp into the filename, YYYYMMDD_HHMMSS_nnnn.jpg. |
| 2006/8/11-14 [Computer/SW/Languages/Perl, Computer/SW/Languages/Functional] UID:43974 Activity:low |
8/11 How do you find out the max # of file descriptors for a process,
thread, and entire system?
\_ Dep on OS. Are the youth today assuming "linux is the standard"?
That is kinda sad.
\_ LINUX RUUULES! W1ND0ZE DR000LEZ!
\_ while(true) { do(something that uses a fd) if (good rc) counter++; print }
\_ while(true) { do(something that uses a fd) if (good rc) counter++;
print }
\- well AssOS is better than windows like perl is better than
basica. but it's not actually good. i can understand using
something "useful" instead of good [like using perl instead
of lisp today] but it's non-good when you dont know what is
good because you have no exposure to it ... "It's a light
saber. The weapon of a Jedi Knight. Not as random or clumsy
as a blaster. An elegant weapon for a more civilized age."
\_ This post is unintelligible.
\_ E_TOOSHORT
\_ How about E_FUCKINGINCOHERENT
\_ Worse than that... this person got into Cal. I
wonder what their application essay looked like.
\_ while(true) { do(something that uses a fd) if (good rc) counter++;
print }
\_ sysconf(3) maybe what you are looking for. I think the variable
for max fds is _SC_OPEN_MAX. Also try unlimt -a (or -n). |
| 2006/6/29-7/3 [Computer/SW/Languages/Perl] UID:43527 Activity:nil |
6/29 Visual Programming in Perl:
http://search.cpan.org/dist/Acme-EyeDrops/lib/Acme/EyeDrops.pm |
| 2006/6/16-19 [Computer/SW/Languages/Perl, Computer/SW/Languages/Misc] UID:43422 Activity:nil |
6/16 Is there anyway in Ant to change/append the value in java.library.path
before starting the script? I'm trying to use Ant to generate a DLL
and then call a Ant task which needs native libraries in that DLL.
I'd rather not have to modify my system path to include libraries
before they have been generated...
\_ Use perl. Wait, sorry, nevermind. :-)
\_ Use ruby (rake). Wait, sorry, nevermind. :-) |
| 2006/6/13-15 [Computer/SW/Languages/Perl, Computer/SW/Languages/Web] UID:43374 Activity:nil |
6/13 In PHP what is the Perl equivalent of
map {$_="HEY $_ HO";} @array; ? Thanks so much!!!
\_ foreach ($array as $i => $val)
$array[$i] = "HEY $val HO";
--dbushong |
| 2006/6/2-4 [Computer/SW/Languages/Perl] UID:43255 Activity:nil |
6/1 Writing a hash/array/scalar traversing function. How do I tell
if a variable passed to me is a hash, scalar, or array
in Perl? Thanks.
\_ You can't, unfortunately. If you really want to do that, you
have to pass a reference instead. --mconst
\_ Ah I got it. I need to dereference a variable, then
do a ref($var) to see its type. THANKS SO MUCH mconst.
\_ Guessing that you really mean you were passed a reference, call ref()
on it, which will give you undef (it was just a scalar), 'ARRAY',
'HASH', 'SCALAR', etc, meaning it was a reference to one of those.
--dbushong
\_ Welcome to perl, the worst of all typing worlds
\_ How about PHP, where the only way to find out if something is
an array or a hash is heuristically (i.e. "are the first few
keys ordered ints starting from 0?")
\_ And to be fair, ruby does some amazingly annoying things
with arrays as return values.
\_ Really? Like what? I've always found ruby's behavior
w.r.t. arrays to be as convenient as possible while still
completely flexible. --dbushong |
| 2006/5/23-28 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:43168 Activity:nil |
5/23 I'm trying to learn sh, bash, and csh programming. What's a good
site that has sample syntax of the following ***psuedocode*** for
each of the shells?
foreach $file in (<dir/*>) do;
echo I have file $file
done;
switch ($var) {
case 0: echo hello; break; // this is a comment
default: echo default; break;
}
if ($z>=5 || $str eq '12345) {print $hello}
\_ not really. I'll start w/ sh: --dbushong
for file in dir/*; do
echo I have file $file
done
case "$var" in
0)
echo hello
;;
*)
echo default
;;
esac
if [ $z -ge 5 -o $str = 12345 ]; then
echo $hello
fi
\_ bash is basically a superset of sh. Whenever I need to brush up
I usually just google for shell scripting, and frequently
(re)discover this site:
http://vertigo.hsrl.rutgers.edu/ug/shell_help.html
Incidentally, csh is a great interactive shell, but there are some
compelling arguments why you may want to avoid it for general
scripting purposes (of course, one nerd's compelling arguments are
another nerds religious claptrap so ymmv):
http://www.faqs.org/faqs/unix-faq/shell/csh-whynot
Also, I find the O'Reilly UNIX Power Tools book to be a very useful
reference to have around when shell scripting. -dans
\_ I gave up on csh for all but the simplest shell scripting when
I noticed it didn't handle nested if/then cases sanely, and went
through coding hell trying to workaround it. If you're
going anything more than 2-3 lines, use a sh based shell, or
a "real" script language like perl. -ERic
\_ I'll second that. I still use tcsh from the cmd line just because
I find it more pleasant than bash, but meh. I'll tend to use
perl unless the script is going to end up being more than about
25% program executions. --dbushong
\_ My rule is 10 lines. If I can't write it in 10 lines of some
shell script language in a few minutes I'll use perl instead. |
| 2006/5/8-9 [Computer/SW/Languages/Perl] UID:42970 Activity:nil |
5/7 >./news.cgi
Can't locate XML/RSS.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.\
8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.\
8 /usr/share/perl/5.8 /usr/local/lib/site_perl .)
Can someone install the XML/RSS module? Thanks.
\_ Done. --mconst |
| 2006/4/26-28 [Computer/SW/Languages/Perl] UID:42845 Activity:nil |
4/26 How come the Perl man pages aren't installed? (or where are they?)
Like, e.g., "man perlfunc". Ok thx.
\_ Sorry about that; I've installed them. Please let me know
if anything else seems to be missing. --mconst
\_ how 'bout "man sex" ?
\_ As long as it's done in safe mode, more power to you. Mount
that host yourself. |
| 2006/4/16-17 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl, Computer/SW/Languages/Python] UID:42756 Activity:nil |
4/16 I'm very disappointed with os x:
I made an application bundle around a python script: it executes fine
but dropping a file on it doesn't work
turns out finder passes a ProcessInfo object
and you get that as argv[1]
well, you get its UID- and that is the only arg you get
so far the on;y way i have found to translate the UID into a process
info, and thus to get the path of the file i dragged, is with cocoa
i.e. c++ or objective c.
doesn't seem to be any decent applescript way to do it, or i could just
shell out to osascript
i guess this explains why all the droplet hacks use a binary executable
to call shell, perl, or python scripts
this man-made creation troubles me |
| 2006/4/5-7 [Computer/SW/Languages/Perl] UID:42693 Activity:nil |
4/5 any online tutorials/exam question for Perl? thanks
\_ {ajani,darin}@csua.berkeley.edu taught a perl decal class, try
pinging them. -dans |
| 2006/3/27-28 [Computer/SW/Languages/Perl] UID:42473 Activity:nil |
3/27 Anyone have experience with embedded Perl in C/C++ apps? I've been
using this for a while but now I find out I can't "use POSIX" for
example in the Perl code, and trying to follow instructions on
the internet for how to load extensions like this doesn't seem to
work. So, maybe someone can help describe what should be done...
I tried putting in an xs_init function generated by ExtUtils, but
for example when the DynaLoader tries loading POSIX it can't
resolve symbols that come from perl.h (PL_sig_name). |
| 2006/3/18-20 [Computer/SW/Languages/Perl] UID:42306 Activity:kinda low |
3/18 I'm looking for a file management utility that will copy files
and create directories based on the date of the file. I recently
bought a new digital camera (old was canon; new is casio) and their
file storage naming conventions and directory structures are totally
differently. Each different "loader" does a different thing. And
Picasa doesn't copy and create directories based on file date. What
I want to end up with is a directory structure like this:
My Pictures/2006_03_18/img12345.jpg
I don't care about the filename since each camera has their own
naming convention. But the directory name has to be customizable
to that exact format. SW doesn't have to be free. I'll pay for this.
Thank.
\_ This sounds like a 5-10 minute perl hack to opendir/readdir a
directory structure, cd'ing around, then moving files based on
an fstat. I suspect any of dozens of people here could write this
blind folded, drunk, asleep and off their meds. Or maybe a list
created with find piped through perl. There's a lot of ways to
do something like this depending on what your starting structure
looks like.
\_ perl -MFile::Find -MPOSIX -e 'find(sub{-f&&rename($_,strftime("/My Pi\
ctures/%Y_%m_%d/$_",localtime((stat)[9])))},".")'
\_ perl -MFile::Find -MPOSIX -e 'find(sub{-f&&rename($_,strftime("/My Pi\
ctures/%Y_%m_%d/$_",localtime((stat(_))[9])))},".")'
Change the part after strftime to suit your format and run this from
the directory you want it to start the search at. --dbushong
\_ This breaks if you have any %'s in your filename, btw, though
that isn't hard to fix. --dbushong
\_ Thanks for the responses. I guess I wasn't clear. By the
date I mean the date of the picture embedded in the EXIF header
inside the jpeg file, not the date of the file itself. And
this has to be a windows xp program. I can't write code anymore
so I'm looking for some generic photo manager SW that can do
this. Thanks. -OP
\_ Oh, just download some real tool then, like Organizr or
Picassa. (Though modding that line of perl to use EXIF header
Picasa. (Though modding that line of perl to use EXIF header
is also easy :-) --dbushong |
| 2006/3/10-13 [Computer/SW/Languages/Perl] UID:42187 Activity:low |
3/10 I wrote a little perl, that had a little curl
right in the middle of it's call stack.
And when it crashed, it crashed very very fast,
but when it was slow, it was working
\_ LWP::UserAgent!
\_ Can I use LWP::UserAgent to do multiple concurrent requests,
and time them? Will it deal with a redirect automatically?
\_ There's also a parallel version of LWP:UserAgent but it is a
bit clunkier to use but if you need it, I found it better than
forking off multiple child procs.
\_ Eh, using the default one with Parallel::ForkManager's pretty
easy. I used that for the remote-link checking part of a
linkchecker I wrote and it was pretty easy.
\_ I haven't used P:FM. I assume it's forking off procs?
I'll take a look at it, thanks. I wonder if P:FM or
the P version of LWP:UA is faster....
\_ How would you time the parallel requests in perl? (how long
one takes to complete).
\_ Since I was running dozens or even hundreds at a time, I just
did a simple $end - $start timer for entire runs. Timing a
single connection is a tiny bit harder because the start time
is just a "go do them all now" call but you can time any
particular connection if you want. You know when you fired
off the batch, you control if the batch runs in order or as
fast as possible/parallel, you know for each connection when
you get the first bits back and you of course can tell when a
particular connection is done. But as I said, I just fired
off however many, noted the start and end times and that was
it. Divide # requests by total time was good enough for me. |
| 2006/3/2 [Computer/SW/Languages/Perl] UID:42064 Activity:kinda low |
3/2 LDAP help: I am trying to dump the userPassword from an ldap database
with ldapsearch but it is coming out base64 encoded:
userPassword:: e2NyeXB0fWhhKllueGJrSXhrR2M=
Is there a shell tool to decode this ... I want to avoid re-writing
the whole thing in perl (I'm not that familar with LDAP or encodings
and this isn't important enough to spend a lot of time on ... but I've
answered a lot of motd questions in my areas of expertise so hoping
somebody can return the favor.)
\_ If you've got OpenSSL installed:
\_ If you have OpenSSL installed:
$ echo '[passwd]' | openssl base64 -d
If you've got perl and Base64.pm installed:
If you have perl and Base64.pm installed:
$ perl -e 'use MIME::Base64; print decode_base64($ARGV[0])' [passwd]
Some versions of uudecode also support base64 decoding:
$ echo '[passwd]' | uudecode -rm
\- I have to do this once in a blue moon and use the emacs base64*
functions. Wont work on shell stream but YMMV.
\_ These answers are great! Feel the love. |
| 2006/1/28-29 [Computer/SW/Languages/Perl, Computer/SW/OS/OsX] UID:41579 Activity:moderate |
1/27 Can anyone recommend a good open-source PDF creator for
os x? Thanks.
\_ File -> Print -> PDF -> Save as PDF?
\_ Oops, sorry. I mean SERVER-SIDE PDF creator.
I need to create PDF documents for users of our
web site. -op
\_ Create them from what? You can generate PDF directly
in perl with perl-PDF. Or you can use htmlpdf to
convert HTML to PDF. -tom
\_ Create a CUPS printer with a PDF driver.
On the Mac OS X machine go to <DEAD>localhost:631<DEAD>
\_ If you don't have to produce too many documents, you could do this
with AppleScript. The performance is ass, but fine if your not
trying to pump out many documents a minute.
\_ I won't (I only need approx 1 document/day). How do I use
Applescript? I've never used it before. Thanks. -op |
| 2006/1/18-21 [Computer/SW/Apps, Computer/SW/Languages/Perl] UID:41420 Activity:low |
1/18 I need to gain 20-30lbs of weight and want to track my progress.
I could do this in an Excel spreadsheet but I don't have it
installed right now and would rather have some nifty web thingie -
I googled and most of the stuff I found kind of sucked. Before
I revert to Excel (if lazy) or write my own (if bored) does anyone
have recommendations?
\_ "need" to gain? why?
\_ My BMI is 15.4 . If it wasn't from being sick and/or I was a
girl, I'm sure that's eating disorder range :) -op
\_ http://www-128.ibm.com/developerworks/library/l-gnuplot
Look at figure 8.
\_ Sigh, duh. I actually have used gnuplot a fair amount. This
should be perfect for an unpolished barebones thing. Thanks!
-op
\_ If I wanted to gain 30 pounds, I'd get a spiked tail grafted on to
my ass. This would help with both balance and self-defense, and
seems like the best possible way to gain weight. It might also be
possible to use your mouse or trackball with the tip of your tail,
increasing productivity.
\_ Dude, just roll your own. It's a really simple bit of Perl.
\_ I'm not a big Perl hacker. It is pretty trivial but a nice
one with login/security, and pretty pictures rather than text
would take me at least a few hours to write, because I'm not
particularly familiar with the web/graphics libraries - op
\_ The less you do on the couch, the faster you can put on that
weight. (or more seriously, vi does this just fine)
\_ depends on what kind of weight. he could put on a lot of
weight sitting on the couch or in front of the computer, he
just needs to eat more. EAT MORE LARD!
\_ I lost the weight because I was/am sick, and need to gain it
back in a healthy way or it defeats the purpose. Thanks
anyway! (defeating silly comments with reasonable responses)
- op
\_ So far as I know the only way to quickly gain weight is
to gain fat. If you eat right and exercise a lot, you
might take a couple of years to gain 30lbs of lean-ish
body mass. Unless you have naturally high levels of
testosterone and/or take steroids. Though there are some
other drugs you could possibly take.
\_ Luckily (?), I am actually on (safe) steriods for medication
for a few months. I have seen a nutritionist... it's not
too bad to put on a pound a week, it turns out (eat a lot
and drink Ensure). More than that, maybe I'll get lucky -
if I'm underweight, maybe my body wants to recover or
something. -op
\_ I know dawne wrote one a few years ago; I'll see if it's still lying
around somewhere and easy to get working again. --dbushong
\_ Found it: http://bushong.net/dawn/widgets/tracker
The graphing's a little sluggish b/c GD's broken under mod_perl
for me, but otherwise it seems to work. --dbushong
\_ Oh, right, it doesn't handle weight _gain_. I'll work on it.
\_ If you have a palm use EatWatch:
http://www.fourmilab.ch/hackdiet/palm |
| 2006/1/15-17 [Computer/SW/Languages/Perl, Computer/SW/Languages/Misc] UID:41383 Activity:high |
1/15 This is a computer question which photo geeks would appreciate.
I am trying to
extract date/time from JPEG's EXIF header and use that to
override Windows/NTFS's filename's create time. I need to
do this in a batch mode involves hundreds of photographs.
How to do this? write a shell script in cygwin? which library
do you recommend to extract EXIF header? how to modify ctime on
NTFS? thanks. kngharv
\- i dont know anything about the windows side but i use "jhead"
[http://www.sentex.net/~mwandel/jhead/] or tcl. ok tnx. --psb
\_ thanks. jhead fits that part of my need. However, I am
also looking for something where I can add a field to
EXIF, namely "FocusLengthIn35mm." If any of you guys
knows how to do this, please let me know. OP
\_ Image::ExifTool --dbushong
\_ http://jpgtime.learsy.com i've used it to change the time stamps,
not sure if it can add other exif data
\_ Since the beginning of my digital camera days, I've adopted
the policy of renaming my digital camera images
YYYYMMDD_HHMMSS_NNNN[_tag].jpg (where NNNN is the sequence
number and tag can be the camera model). The time a picture
was taken is more important to me than all the other
attributes, and name my files this way make sure that
information will not be lost and every file has a unique
identification. I use my own perl script to do this, but I
am sure you can find utilities that does rename for you. My
script can also re-touches file timestamp based on the time
embedded in the filename, so I can very easily adjust the
file timestamp if necessary. The important thing is to make
sure your camera's clock is set correctly (for the timezone
you are in), but my script has an offset option for those
"ops" occasions. On my last trip we used 2 cameras, and the
file ordering allows me to dump the pictures from both
cameras together and do slide shows in the order the
pictures were taken across both cameras. Email me if you
want to give it a try. -chiry
\_ I didn't agree with "The time a picture was taken is more
important to me than all the other attributes" until I became a
parent. When other people see my baby's pictures, the first
question they ask is nearly always "how old was he?". For those
pictures without imprinted dates, I quite often find myself
unable to answer.
pictures without imprinted dates, I usually find myself unable to
answer.
\_ unfortunately, the reason why I've asked this question at
first place is that I am still using 35mm and other film cameras.
and they don't have EXIF info :p
\_ might be a bit overkill, but these should be able to do what
you want:
http://www.luminous-landscape.com/reviews/software/asset-management.shtml |
| 2006/1/4-6 [Computer/SW/Languages/Perl] UID:41229 Activity:nil |
1/4 How can I kill a win32 process in perl that I created from fork?
I tried fork + Win32::Process::KillProcess, but I don't think that's
the right process id.
\_ One would assume you could just call kill() on whatever id you got
back from fork(), but that probably makes too much sense.
\_ I've tried kill, and it doesn't kill the proc. I of course tried
that first. It works fine on Unix. I'm using activestate perl.
\_ what are you forking?
\_ The child proc exec's mplayer, the parent monitors it and kills
it under certain conditions. |
| 2005/12/18-20 [Computer/SW/Languages/Perl] UID:41065 Activity:nil |
12/18 With FreeBSD's sysinstall program, is there a way to search for
packages by name only and not by description? That is, if I search
for perl, can I filter out all the zillion modules that happen to
mention "perl" in their description? Alternatively, is there a way
to navigate the long lists of packages without continuously using
page-up/page-down? (Why are the first letters highlighted in a
different color if they aren't mnemonics?) Is the answer simply:
"don't use sysinstall, use ports"?
\_ either use
cd /usr/ports; make search name=whatyouarelookingfor
or poke around http://freshports.org - danh
\_ check out portupgrade too. if you use its -PP option, it
will only use packages |
| 2005/12/7-9 [Computer/SW/Languages/Perl] UID:40911 Activity:kinda low |
12/7 Sure, call me crazy, but is there a way to run Perl on a PDA?
I stfw, and all I found was a 2001 article on http://Perl.com saying
that it's impossible, but in tech terms, this is like finding a
1930s article saying it's impossible to send a man to the moon.
\_ uh... which PDA? I don't see why not, and probably the only
issue is limited memory.
\_ I wouldn't say limited memory is an issue w/ PDAs these
days. I think my Treo has more memory than my first linux
box (it certainly has a bigger "hard drive" - 1 GB flash)
\_ Well, your Treo still has only 16 MB of RAM, much of which
is probably in use. The 1 GB flash doesn't really help
here. And even then, Palm OS has a pretty puny stack.
Anyhow, it's still an issue for some PDAs, hence my
question about which one.
\_ Well, it's more of a wishlist kind of thing. I'd like
a PDA that I test some scripts on; being able to read
a PDA that I can test some scripts on; being able to read
ebooks and listen to music on it wouldn't be bad, either.
Suggestions?
\_ There is something for WinCE:
http://www.rainer-keuchel.de/wince/perlce.html
Supposedly there is a port to PalmOS, but it looks dead:
http://sourceforge.net/projects/palmperl
I think there are some Linux based PDAs that come w/
Perl (Zarus?)
\_ Is the Zaurus discontinued? I'm having a hard time finding one
for sale....
\_ Is JavaScript close enough? We have pretty good DOM/JS support in
recent versions of the AvantGo client. --dbushong
\_ Sorry, no, Perl-heavy work environment. |
| 2005/12/5-7 [Computer/SW/Languages/Perl] UID:40851 Activity:nil |
12/5 Ever since the reboot, I've been getting the following messages:
procmail: Kernel-lock failed
procmail: Kernel-unlock failed
many times. What does this mean? Anyone know what might be
causing this?
\_ I think we're missing the perl module File/MkTemp.pm; want to mail root
for both of us?
\_ Done. -op |
| 2005/11/22-24 [Computer/SW/Languages/Perl] UID:40693 Activity:nil |
11/22 "Beginning Perl" vs. "Picking Up Perl", which one is better for
learning Perl from scratch? I know C for more than a decade but don't
know any Perl. Thx.
\_ if you can borrow it, borrow Beginning Perl, it's a quick easy
\_ if you can borrow it, borrow Learning Perl, it's a quick easy
read, makes for a good intro.
\_ Programming Perl may be just as good of a choice or better. |
| 2005/11/18-19 [Computer/SW/Languages/Perl] UID:40650 Activity:nil |
11/18 In C, argv[0] is the command that invokes the program. Is there an
equivalent in Perl? Thx.
\_ $0
I believe the perlrun manpage has all you would ever want to
know on this subject.
\_ It works. Thx. |
| 2005/11/12-14 [Computer/SW/Languages/Web, Computer/SW/Languages/Perl, Computer/SW/Unix] UID:40555 Activity:nil |
11/11 Hey MOTD, I'm looking for a good webhosting service. A coworker has
recommended http://dreamhost.com. Does anybody have any first hand experience
with that provider? Does anyone have any suggestions, warnings or
general advice? Ideally I'm looking for a place with a unix shell,
php, perl, and possibly mysql & cron -- but it doesn't have to have
heavyweight bandwidth, etc. TIA. -mice
\_ It may be more money & work than you wanted, but I've had good
luck w/ http://johncompanies.com. You get root on a jailed system: FreeBSD
w/ ports tree available or some Linux distro w/ some pkg system.
So you can run any sort of mail/web/anything server you want.
Very responsive support. But it's like $30 - $70/month. --dbushong
\_ Is that how much you pay for http://csua.org?
\_ No, currently I just run it off my home DSL. I'm thinking
about getting either a colo'ed box or something like this
one of these days just to have the option to scale a web app
to higher bandwidth on short notice should I ever actually
manage to market anything successfully (e.g.
http://floatingsheep.com/wishlist ), but for now it's not
quite worth the expense. --dbushong
\_ I have friends who use dreamhost (and one of them gave me a login).
AFAICT it seems to be pretty good (unix shell, perl, php, mysql,
and I assume cron). If I had to pay for hosting myself, I'd
probably go with them. --jameslin |
| 2005/10/24-26 [Computer/SW/Languages/Perl] UID:40247 Activity:kinda low |
10/24 Dear motd. I need some perl to randomize the lines in a text file.
I know this is easy but i have no perl-fu. Please help.
\_ @lines = <FILEHANDLE>;
print splice(@lines,rand(@lines),1) while @lines;
\_ Let's hope your file is not bigger than the amount of virtual
memory of the machine.
\_ Yes, since motd so often grows to fill memory on soda....
\_ Let's... How completely pointless. This was a 2 minute perl
snippet, fer chrissake...
\_ Maybe I should show what I have and you can tell me where I'm
going wrong, This uses a fisher-yates randomization to be
unbiased:
#!/usr/bin/perl
open(FILE, "+< $_");
while (<FILE>) {
push(@lines, $_);
while (@lines) {
print splice(@lines,rand(@lines)%@arraylength);
}
@reordered = fisher_yates_shuffle(@lines);
foreach (@reordered) {
print $_;
}
sub fisher_yates_shuffle {
my $list = shift; # this is an array reference
my $i = @{$list};
return unless $i;
while ( --$i ) {
my $j = int rand( $i + 1 );
@{$list}[$i,$j] = @{$list}[$j,$i];
}
}
\_ Your function isn't returning the array. @reordered is being
set to "0" (The return value of the "while"). Change
"foreach(@reordered)" to "foreach(@lines)" and this code
should work.
\_ Careful about using rand with %. You can get into distribution
problems there.
\_ The % doesn't do anything; perl rand called that way can
never return >= @lines.
\_ Upgraded as per dbushong. I didn't trust perl enough.
print splice(@lines,rand(@lines)%@arraylength) while (@lines);
\_ Upgraded as per dbushong
\_ Where's $_ coming from in the open() line?
\_ #!/usr/bin/perl
die "usage: $0 file\n" if @ARGV != 1;
open(my $fh, '<', $ARGV[0]);
my @offsets = (0);
push(@offsets, tell($fh)) while <$fh>;
pop @offsets;
while (@offsets) {
seek($fh, splice(@offsets, rand(@offsets), 1), 0);
print scalar <$fh>;
}
close($fh);
## this is how i'd do it. --dbushong
\_ My (extremely short) version:
/msg dbushong hey, can you write a solution to that motd thing?
\- i have had problems using perl rand to do this on files with
more than 32k lines. you may want to test this out ... maybe
rand returns more values than it use to but i had to re-write
this for larger files ... this was +5yrs ago. if you want the
codes mail me. oh also for larger files performance can be an
issue. [i dont mean really large files ... i typically was
operating on about 130k entries ... 2x/16netblocks of addresses]
--psb
\_ Actually, it looks like it's not perl rand, it's just
manipulating the slices efficiently on large arrays that's
making things suck. I'll ponder. --dbushong
\_ OK, redone to user fisher-yates as above. Now it only takes
22 seconds on soda on /usr/share/dict/words: --dbushong
#!/usr/bin/perl
die "usage: $0 file\n" if @ARGV != 1;
open(my $fh, '<', $ARGV[0]);
my @offsets = (0);
push(@offsets, tell($fh)) while <$fh>;
for (my $i = @offsets - 2; $i >= 0; $i--) {
my $j = int(rand($i));
@offsets[$i,$j] = @offsets[$j,$i] if $i != $j;
}
for (@offsets) {
seek($fh, $_, 0);
print scalar <$fh>;
}
close($fh);
\- hello my codes taeke about 5-6 sec on /usr/dict/words
on sloda but the sloda numbers are not that stable
it is interesting to see the memory growth variations
of the different approaches. ok tnx.
this time i didnt check the quality of the shuffle.
SSH-soda{12}[~/bin]% while 1
loop==> ./rand1.pl /usr/share/dict/words > /dev/null
loop==> end
0:05.46sec, [3.961u 0.100s 74.3%], [10080Kbmax 0pf+0#swap]
0:06.56sec, [3.949u 0.146s 62.1%], [10078Kbmax 0pf+0#swap]
0:05.42sec, [3.953u 0.108s 74.7%], [10080Kbmax 0pf+0#swap]
0:06.70sec, [3.921u 0.172s 61.0%], [10082Kbmax 0pf+0#swap]
0:08.29sec, [4.041u 0.182s 50.9%], [10074Kbmax 0pf+0#swap]
0:05.19sec, [3.870u 0.185s 78.0%], [10074Kbmax 0pf+0#swap]
0:04.79sec, [3.830u 0.176s 83.5%], [10078Kbmax 0pf+0#swap]
0:04.55sec, [3.902u 0.159s 89.0%], [10074Kbmax 0pf+0#swap]
0:06.07sec, [3.917u 0.182s 67.3%], [10076Kbmax 0pf+0#swap]
\_ How would an Intel Critical Asset randomize a file? |
| 2005/10/19 [Computer/SW/Languages/Perl, Computer/SW/OS/Windows] UID:40189 Activity:nil |
10/18 This is a serious thread, please don't delete it. I'm about to get
\_ Ah come on... Beastiality never goes out of style.
married and will be sharing my XP file server files (MP3 and videos)
on 802.11x. The server will be up and accessible 24x7 to run regular
stuff too like TV (all-in-wonder card), browser for house guests,
etc. I also have about 50G of porns on it and I need to hide them
from my wife since she doesn't like them. Since she's in tech
she knows how to mount, log in, and do other things. What's the best
way to hide my porn collection? Thanks.
\_ Burn to DVD and then delete.
\_ Agreed.
\_ Or buy a firewire drive, transfer everything to it, keep
it unplugged and in a closet for the duration of the
visit just to make sure that some random guest doesn't
accidentally replug it in.
\_ Yes, but you'll be stupid and leave it plugged in after
a really good session. Poof. Caught. Just admit to yourself
you have a porn collection, cull it down to just Good Porn,
and put it somewhere she won't see right away. Make a
backup because once she does find it, she'll delete it.
Get yelled at. Find another place to hide in directory
structure. Best place? Game and app directories.
\_ Can't you just make the folder not readable for other users?
\_ Yeah, win xp has per-user security stuff available like unix.
\_ What about 2k and NT? -- !OP
\_ i think it's tied to NTFS
\_ This is hilarious!
\_ I guess you could try just obfuscating it under some innocent
directory tree and rename all the files with a perl script or
something.
\_ nuke it all. enjoy your wife more.
\_ link:csua.org/u/drp (work-safe)
\_ PGPDisk. Confidential_work_docs.pgd. And make a backup to a
3.5" USB drive. -John
\_ pkzipc -pass foo ......
\_philcompress
\_ Did phil ever graduate, or is he still a perpetual undergrad
creeping closer to graduation one unit at a time? |
| 2005/10/6-9 [Computer/SW/Languages/Perl] UID:40002 Activity:nil |
10/6 Is there an easy way in Perl to enumerate a complete file tree from a
given directory?
\_ File::Find?
\_ This looks far too complex for what I need. But if there's
nothing simpler I guess I can use it.
\_ use File::Find;
find(sub { print("$File::Find::name\n"); }, '.');
# how much simpler did you want?
\_ Yeah, after trying it, it was easier than I thought.
Thanks for the recommendation. |
| 2005/9/23-27 [Computer/SW/Languages/Perl] UID:39836 Activity:low |
9/23 In the interests of not re-inventing the wheel: anyone know of
a simple way,inside a perl program ,to have a command start at
the top of the minute? Thanks
\_ cron
\_ on a not-busy system cron is good at starting commands at the top
of the minute but does not guarantee your job will run at that time,
just at *some* time during the minute. if you really actually need
to run at the top of each minute, you could write a check vs the
current time and do a "sleep 1" or something equally silly in a loop
until $current_second_in_minute = 0 or whatever your criteria is.
on a busy system all bets are off.
\ This is a test program that needs to send specific data
to a device which bins data every sixty seconds and I am
losing bits at the beginning and ending of the test
because the test code does pay attention to where in the
minute its started. Its a small but noticable error
that I would like to get rid of; if possible.
\_ What sort of granularity do you need? Less than a second?
Less than two seconds? Less than a tenth of a second?
\_ I would just sleep # of secs until next minute then run command
if you need greater precision there are probably millisec calls
\_ I would at least like to start off with a +/- 1
second and go from there. The sending and receiving
machines both use the same ntp servers so the clocks are in
sync.
\_ setitimer() is what you want, but it is in C, Time-HiRes uses
it in perl. Or you could write a few lines of C to sent your
perl a signal every min.
\_ I'd second this. Let us know if there are other limitations.
\_ use a real-time language (ie not perl/java)
\_ What does the language have to do with it being real-time or
not? There are plenty of real-time JVMs out there. The
OS/environment is responsible for this, not the intrinsic
language. |
| 2005/9/21 [Computer/SW/Languages/Perl] UID:39789 Activity:low |
9/21 In Perl how do I pass by reference a scalar variable?
\_ \$foo --dbushong |
| 2005/9/2-3 [Computer/SW/Languages/Perl] UID:39466 Activity:nil |
9/2 Hey motd I used to have perl w/DBI 1.42 & DBD 2.9003. After
upgrading Perl, DBI 1.48, & DBD 3.0002_1 I'm seeing something
really weird. The following used to work:
$dbh=$DBI->prepare("INSERT INTO data VALUES(\?)");
for ($i=0; $i<10; $i++) {
if (!$dbh->execute($i)) {
print("Oh no! Can't execute: ",$dbh->errstr);
}
}
This runs ok before the upgrade. After the upgrade, if I ever
see just one error, the rest of the execute statements give
me an error, even though they do insert. Anyone run into this
problem? Is this a bug? ok thx.
\_ Hi, I'm the op. I tried DBD 3.0002 instead of 3.0002_1 even
though the CPAN web site lists them with the same number
of PASS/FAILED tests. I guess they missed this simple test case.
Anyways, DBD 3.0002 seems to work. Thanks. |
| 2005/8/31 [Computer/SW/Languages/Perl] UID:39376 Activity:nil |
8/31 Looking for an XML parser for Perl, preferably one that
doesn't require installation (something already built in).
If it's not already built in, I prefer something that doesn't
require C compilation, and that I can just stick the *.pm
to use. I'm looking for portability, not performance. Thanks.
\_ What's wrong with using CPAN?
\_ Sometimes it's nice to be able to just give someone
a self-contained tar-ball and say "here, run this"
without expecting them to debug the various CPAN error
messages that might crop up. I've always found CPAN to
be a slight PITA.
\_ Huh? CPAN simply automates the compile for you. It's not
like you can simply tell someone to tar xzf foobar.tgz
without doing a perl Makefile.pl and then doing a make
on it for the majority of modules. Given that you aren't
guarenteed where the site modules for perl reside on
any given distribution, your safest bet in terms of
portability is to utilize make. In the majority of cases,
it usually just simply dumps the pm files in the correct
place. If you have problems with CPAN, then you most
likely will have problems with installation of perl modules
anyway. The only way you can really ensure no make, no
brain portability is if you have the same setup on all
your distribution machines and then do a straight tar off
of it. If you're that paranoid about it, you can simply
wrap CPAN into a script...
\_ By searching for XML Parser on CPAN I got like over 1000
results. I never know whech CPAN modules are the best to
use and end up wasting time experimenting them. Let me give
you an example. Someone put up XML::Parser. The name is good
but the format they use is completely fucked up (hard to use).
Someone else put up XML::Parser::EasyTree, which is much
easier to use. By the time I figured out which one has the
least bugs or problematic or easiest to use, I've already
wasted 2-3 hours.
\_ I've been using XML::Simple... I'm only doing basic stuff.
\_ Interesting! Unlike shitty XML::Parser, according to
XML::Simple the following two cases are actually equivalent!
case 1: <tag1 field=value>HELLO</tag1>
case 2: <tag1><field>value</field>HELLO</tag1>
Do you ever run into problems? I think this is perfectly
acceptable for my cases and actually makes my life a lot easier.
THANK YOU MOTD, YOU ARE GREAT.
\_ Four problems w/ XML::Simple:
1) if you're trying to _output_ XML to conform to a specific
schema/DTD, it's very hard
2) unless you turn off some of the behavior that makes it
easy to use, a different file of the same schema can
produce a different data structure in perl; not always what
you want
3) at least when I used it, it caused mod_perl to die horribly
4) It reads the whole file into memory. If you have a huge
file you should use something like XML::Twig
--dbushong |
| 2005/8/31-9/2 [Computer/SW/Languages/Perl] UID:39372 Activity:nil |
8/31 Anyone here use ruby? Is it worth learning (say for someone who
mostly programs in perl/c)?
\_ You don't say what your intended use is. For what? For personal
pleasure because you're a language geek? For work? For a big
team project? For one off throw away code? What?
\_ I've been hearing a lot about it from co-workers and
I wanted to know if I should spend some time to learn
it b/c it is one of those things that any reasonable
unix person is expected to know.
Also it is pretty nice, I'd like to re-write some of
my personal perl programs so I can ditch perl.
\_ Yeah, it's worth learning, why? Because it's not perl. I'd suggest
learning Python over Ruby (probably bigger base). Scripting in
perl just plain sucks, especially if you have to come back to
it in a couple of months and update the crap.
\_ If you write crap code in ruby, it will still be crap code
months from now. Don't blame the language if you're a shitty
programmer.
\_ I started on it. I read all the online intro/how-to/beginner docs
but since I'm already proficient with perl I just couldn't find a
real excuse to write anything in ruby. Same thing happened to me
with python. Yes, there are some things that might be somewhat
easier in one language over the others, but not so much better
that I saw value in climbing the learning curve for the rest of it.
\_ So, all the "small clean code" fans I know swear by it,
including my boss. They usually say it's got the best of Perl
and Python, plus some new features.
\_ Getting paid to write in it is different than choosing to
because you like it. If my boss swore by it I'd be over that
pesky little learning curve. :-)
\_ I use ruby for scripting, primarily because I know Smalltalk
and I don't know perl. Ruby has a bit of kitchen-sink syndrome
(let's throw in another language construct / feature!), but
all-in-all it's decent.
If you can already do everything you need to in perl,
there's probably no need to learn ruby, but, I think ruby programs
are usually easier to read and ruby has some features like
continuations that are good to know for general programming
knowledge. - ciyer
\_ I've started to use it. A buddy of mine who was a bigtime
coldfusion programmer says that Ruby on Rails is prob one of
the coolest things out now for web app dev.
see: http://www.michaelbuffington.com and search for ruby.
- vallard
\_ Ruby is probably the most fun language I've ever coded in. It makes
writing everything as beautiful little OO jewels beautifully easy.
It also lets you do lots of "cool hacks" that probably don't lead
to good, maintainable code, but they're a hell of a lot of fun to
write. That being said, it has some issues:
* it's the slowest modern language i've ever used
* dynamic typing + no sigils (perl's @foo, $foo, %foo things to
sort of indicate type) = lots of runtime errors, for me.
supposedly if you're a better programmer this doesn't happen, but
I'm just weak.
--dbushong
\_ Yeah this is what I'd say. Well, the slowness part. The lack of
sigils is a benefit I think... if it's a problem I think you
might try using naming conventions. But mainly I've only played
around with it for fun because nobody at work knows about it,
it's slower, and the smaller userbase and "stuff" out there
for it compared to Perl. Perl's OO blows so hard though.
\_ I think one thing Perl is teaching me is that it's important
to give pretty names to stupid things. 'Sigil' sounds so
much better than 'declare-with-every-use.' -- ilyas
\_ I like perl, being a slow learner I have a hard time learning
yet another new language. I think what you get with The use of
ruby on rails is nice; Active Record, MVC (CRUD w/ scaffolding),
AJAX 'api', testing and debug builtin, reflection (MINIMAL schema
configuration), etc. Check out the intro videos on.
http://www.rubyonrails.org |
| 2005/8/25-26 [Computer/SW/Languages/Perl] UID:39273 Activity:nil |
8/25 Is there any way in Perl for win32 to explicitly kill a process started
with fork? kill 9, $pid doesn't do it.
\_ cygwin or activestate?
\_ I'm using activestate. -op |
| 2005/8/19-22 [Computer/SW/Languages/Perl] UID:39181 Activity:nil |
8/19 Sight Seeing with Google: http://perljam.net/google-satellite-maps |
| 2005/7/15-18 [Computer/SW/Languages/Perl] UID:38643 Activity:nil |
7/15 How do you check what Perl libraries you have on your machine?
\_ Perldoc isn't working for me to figure out command line way right
now, but you can always 'perl -V' and manually look in the @INC
directories.
\_ If you just want to know if module Foo is installed, you can say:
perl -MFoo -e ''
If Foo is present, this will exit silently. If it's absent, you'll
get an error to the effect of 'Can't locate Foo.pm in @INC' -dans |
| 2005/7/12-14 [Computer/SW/Unix, Computer/SW/Languages/Perl] UID:38585 Activity:nil Edit_by:auto |
7/12 Your favorite O'Reilly books online, for free. This includes
big titles on Java, Perl, networking, UNIX, Oracle, Linux, and Samba.
http://www.unix.org.ua/orelly
and here
<DEAD>www.hackemate.com.ar/textos/O'reilly%20-%20Complete%20Bookshelf<DEAD>
\_ With all the political trolling that's been going on around
here, at first I thought this was about Bill O'Reilley.
\_ keywords: book learning perl mysql postgres Oreley
keywords: OReilly Reilly OReiley Reiley OReilley Reilly Orelly Orelley |
| 2005/7/7-10 [Computer/SW/Languages/Perl] UID:38467 Activity:nil |
7/7 Is there an easy way in Perl to parse command-line arguments like:
-opt1 val1 -opt2 val2?
\_ Getopt::Std module
\_ Ah, thank you--both for the useful answer and the quick reply.
\_ Specifically, look at the getopts() function in there.
\_ How about in Python?
\_ python has a standard getopt too. stfw. |
| 2005/6/27 [Computer/SW/Apps, Computer/SW/Languages/Perl] UID:38320 Activity:nil |
6/27 PDF -> Excel question. In a PDF file there are rows and columns
of numbers (a spreadsheet). Is there an easy to to copy and paste
that into excel and preserve the format? I tried it many times
and spent a lot of time dicking around with the "paste formatter"
manually putting in column delimiters. And it still didn't come
out ok because the columns couldn't line up. Is there a third
party software that can do this? or some other way like export
the highlighted PDF segment into some other format/document and
then move it back into excel? This is not for a small table.
It's huge and I probably need to do this for several PDF files.
Manual input is out of the question. Thanks.
\_ perl, Perl-PDF and Spreadsheet::WriteExcel -tom |
| 2005/6/21-23 [Computer/SW/Languages/Perl] UID:38230 Activity:high |
6/21 My math and/or perl fu is weak. Is there a way to get integer
multiplication in Perl the way it's done in C? i.e. limiting
to 32 bits. Like 1588635697 * 1117695901 = 1166976269 in C.
\_ Can't you just multiply and then mask all but the last 32 bits?
\_ I don't think so; that's not the same as mult overflow.
> perl -e 'print (1588635697 * 1117695901)'
> 1.77561160671918e+18
> perl -e '$foo = (1588635697 * 1117695901); printf("%u",$foo)'
> 4294967295
> perl -e '$f=(1588635697*1117695901)&0xffffffff;printf("%u",$f)'
> 4294967295
I guess I could call C from perl but I'd rather not. Or construct
my own slow 32-bit binary multiplier in Perl, haha.
\-ObUseLISP
\_ People sometimes give me a hard time for disliking Perl, but I
really do feel it's not a well-designed programming language.
This is one example of why. Most other high level languages
have a notion of a native integer and native floating point
type. Lisp and ML languages certainly do. By the way,
what you want to do is 'use integer;'. In other words:
perl -e 'use integer; $f=(1588635697*1117695901);printf("%u",$f)'
-- ilyas
\_ Perl never claimed to be strong computationally. It's
a text munging engine at its core. That "use integer"
is required isn't all that surprising.
\_ Neither Lisp nor ML claim to be strong computationally
either (they are both meant for symbolic processing).
This does not stop them from having good design, and
a GC that doesn't leak. Matlab, which is often used
for numerical tasks, has a base numeric type that is
a complex-valued matrix! This excuse is neither here
nor there. Perl's poor quality coupled
with Perl's popularity really lowered consumer
expectations, I feel, which is a pity. -- ilyas
\_ Thanks, that works... except I had to play around a bit.
For example this case doesn't work:
perl -e 'use integer; $f=1117695901*(3177271395/2); printf("%u",$f)'
> 137188522
The division seems to throw a wrench in it. But it works
if I put only the multiplication in a block by itself,
with 'use integer' there. I'm not sure I trust this thing.
\_ how do you get the C-integer behavior in Lisp?
\_ Lisp, by default, uses bignums in case of overflow,
but it is possible to get around this with some
syntax verbosity, for instance in cmucl:
(defun f (x y)
(declare (optimize (safety 0)))
(declare ((unsigned-byte 32) x y))
(the (unsigned-byte 32) (* x y)))
(print (f 1588635697 1117695901))
There's probably a shorter way, but I don't care
enough to find it. At least it does the Right Thing
always, unlike Perl above. Notice that Lisp treats this
issue as one of type safety -- setting the safety knob
to 0 forces it to use the unsigned 32 bit integer type
for the result even if it cannot prove the result will
'fit.' -- ilyas
\_ well those people are idiots. Perl is not a programming
language, it's a bunch of ugly hacks that look like a
programming language. The fact that Perl is so popular
is not so much that it is intuitive or has features of
good languages, but the fact that it has one of the
most comprehensive libraries out there. I hate Perl,
but I also hate writing stuff in Java or scripts where I
need to build or find my own CGI lib, XML parser, code
generator, sql mod, and all the extra nice things that
are readily available on Perl.
\_ You should give Python a try. It has plenty of
drawbacks, like any interpreted language, but its
a million times better than Perl IMO. And you get a
huge set of the aforementioned bells and whistles that
are roughly comparable to what Perl has. Note that
one of the first complaints about Python is usually its
use of whitespace as a block delimiter, so if you can't
get past that you're probably SOL.
\_ I feel Python is a poorly implemented, inelegant
Lisp with decent library support. See Norvig's
essay on this subject. -- ilyas
\_ From Norvig's site: "The two main drawbacks of
Python from my point of view are (1) there is very
little compile-time error analysis and type
declaration, even less than Lisp, and (2)
execution time is much slower than Lisp, often by
a factor of 10 (sometimes by 100 and sometimes by
1). Qualitatively, Python feels about the same
speed as interpreted Lisp, but very noticably
slower than compiled Lisp. For this reason I
wouldn't recommend Python for applications that
are (or are likely to become over time) compute
intensive. But my purpose is oriented towards
pedagogy, not production, so this is less of an
issue."
Overall from what I can tell, he seems to *like*
Python despite these objections, and his main
objection seems to be that you can't compile it.
I've done tons of useful production work with
Python, so while I see where he's coming from I
don't see the practical downside of his complaint.
I can see why a computer scientist might object
to Python, though.
\_ You have to understand that Norvig works at
Google now, and Google has standardized on
Python, like it or not. I am not really
familiar with internal politics over there,
but it wouldn't surprise me if he was somewhat
pressured to not hate Python too much. I feel
scheme + SICP is the best pedagogy tool for
CS. There are a lot of really clunky things
about Python I don't like, but then again,
that's true of most languages. That's why I
want to roll my own one day. Also, the kinds
of things I like in programming languages are
fairly obscure, hard to explain and verbalize
things. -- ilyas
\_ Well, roll your own then. It's
actually pretty easy these days. Jim
Gray is quoted as wondering why
everyone isn't doing it.
\_ Writing is easy. Designing is hard.
-- ilyas
\_ "A poorly implemented, inelegant Smalltalk
with decent library support," is probably
a more accurate description of the language.
- ciyer
\_ How do you feel about ruby? -aspo
\_ Yeah, ruby is a new take on smalltalk
(dynamic typing, everything is an object).
Python resembles lisp more than
smalltalk. -- ilyas
\_ So. What do you think about ocaml?
\_ I don't like ocaml as much as I once
did. It's a good implementation
(which is rare), but I have been
finding design problems. E-mail me
if you are interested in a serious
discussion rather than half-hearted
trolling attempts. -- ilyas
\_ Foolish me for thinking that perl used bignums instead of
magically converting ints to floats. -pp
\- people who think perl is good as opposed to useful
typically have not been exposed to something actually
good. while one can debate what is the "Right Thing"
it's pretty pointless to debate what somebody else
finds useful. i use perl now and then but at the back of
my mind i am always a little nervous because of all the
things it is doing behind the scenes [to allow sloppiness]
which i dont understand. although admittedly i havent
seen perl do too many really crazy things since perl 4
[where you would hit crazy implementation as opposed to
design bugs like you would reorder a case statement and
all of a sudden perl core dumped. it's funny how berkeley
unix was the example of "worse is better" in the famous
"essay" and now BSD Unix is sort of the gold standard.
\_ psb, did you write some Open Source polynomial solvers
in Lisp? I came across some code by a "psb" at my
last job.
\- um, i did write some stuff for MACSYMA a while ago.
this was sort of pre-open src so it was more like
i threw it out there. this actually indirectly came
out of a ucb linear algebra class. a dumbass friend
of mine brought us what he said was an extra credit
homework problem, but turned out sort of a hard
problem [maybe a Knuth 42] and this lead to some
useful stuff being written. the only place i was
aware this was being used was IBM.
\_ My favorite thing that Perl got wrong is their
garbage collector, which leaks on cyclic data structures.
There is even an AI koan about this very subject.
-- ilyas
\_ point is valid. Luckily, most Perl programs
like CGI/PHP don't persist too long. Perl doesn't
scale well for real huge programs.
\_ Is that a GC bug or a result of the way it was
designed?
\_ It was designed that way. -- ilyas
\_ It was designed that way. See koan #2 here:
http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?AI+koan
-- ilyas |
| 2005/6/7-8 [Computer/SW/Languages/Perl] UID:38010 Activity:nil |
6/7 Who the hell is toshi?
92998 toshi -22 0 21652K 7340K swread 0:04 1.60% 1.56% perl
93677 toshi 60 0 22400K 11632K RUN 0:03 1.92% 1.51% perl
92893 toshi 62 0 25020K 7788K RUN 0:09 1.80% 1.42% perl
93173 toshi 62 0 25060K 17216K RUN 0:07 1.22% 1.22% perl
93020 toshi 63 0 25048K 15072K RUN 0:08 1.17% 1.17% perl
92957 toshi 62 0 25028K 11168K RUN 0:08 1.03% 1.03% perl
92988 toshi 61 0 25020K 9380K RUN 0:08 1.30% 1.03% perl
93074 toshi 61 0 25028K 15584K RUN 0:07 0.98% 0.98% perl
\_ Isn't he the dinosaur that Mario rides?
\_ nah, that's yoshi
\_ Yeah, was Toshi the evil cat-child in 'The Grudge'?
\_ I think you mean Toshio, though I don't speak Japanese
so for all I know that might functionally be the same.
\_ http://www.toshireagon.com |
| 2005/4/29-5/1 [Computer/SW/Languages/Perl] UID:37411 Activity:moderate |
4/29 I need help getting information off a web site. A page presents
information about an item in locations spread througout the page.
Each page presents information about one item. What is a quick and
easy way to go through several pages, capture all the information
related to each item, and put them into a spreadsheet with a unique
index? I think this might be possible by scraping the screen, but how
does one go about this from a Windows workstation (with no app
servers)? Would it be easier to record a bunch of copy and paste
actions with automation / macro recording software and replay the
macro?
\_ On a windows machine with dotnet you can just simply write
the whole thing in a couple lines of C Sharp. They've even
got a snarf util in the O'Reilly book.
\_ perl. -tom
\_ Typical Tom answer. Tom, when you dont know much about
something, why don't you leave it for others to answer?
\_ what do you mean? perl is a fine solution. -tom
\_ WWW:Mechanize is a valid suggestion. "Use perl" is a
step away from "write a prgrogam." Sad you can't see
this.
\_ If you know anything about perl, you know
there's more than one way to do it. I wouldn't
use WWW::Mechanize, though that's certainly a
reasonable approach. -tom
\_ more specifically, WWW::Mechanize is useful -dwc
\_ Python's urlib module does this quite easily also. -scottyg |
| 2005/4/13-5/25 [Computer/SW/Languages/Perl, Computer/SW/SpamAssassin] UID:37167 Activity:nil |
4/14 Perl upgraded to 5.6.2. SpamAssassin (spamd/spamc) upgraded to 3.0.2.
moria (and angband, and NPPAngband) installed, for all you really
old-schoolers. |
| 2005/4/4-5 [Computer/SW/Languages/Perl] UID:37058 Activity:nil |
4/4 entry-level whitebox testing job at hot startup, involving crazy
Big Brother type technologies. Email brain for details! Have a resume
and be prepared to code C++, Java, and possibly perl. Code is more
crucial than QA skills; I'll show you that part. -brain
\_ big brother in a good way or in a bad way? of course, how could it
be in a good way?
\_ I think he means the s/w called Big Brother, which monitors
the health and status of systems.
\_ Problem solving is the more important part in any QA.
(Person who is doing Sr QA and deals with programming
QA types outsourced to Russia who can perl like a demon but
can't understand testing worth a damn.)
\_ Developers who can't write their own functional and unit
tests are dangerous and not to be trusted. |
| 2005/3/25-29 [Computer/SW/Languages/Perl] UID:36872 Activity:nil |
3/25 In Perl, how do I specify a SIGHUP and SIGKILL handler? I want to
clean up stuff when I press CTRL-C on my Perl script. -ok thx
\_ RTFM. Look for %SIG in "man perlipc"
\_ STFW: http://www.unix.org.ua/orelly/perl/cookbook/ch16_16.htm
\_ Above trolls should STFU.
\_ Methinks you need to STFW for the definition of "troll"
\_ ROFL LOL, WTF!? |
| 2005/3/24-25 [Computer/SW/Database, Computer/SW/Languages/Perl] UID:36846 Activity:nil Edit_by:auto |
3/24 How do I do non-blocking read in Perl? For example, let's say I do
open(FD, "tail -f file.log |");
And I'd like to read it, but not block it. Can that be done? -ok thx
\_ Yes. You need to use fcntl to mark FD as non-blocking and then
you need to use select and sysread to read from FD.
\_ http://www.unix.org.ua/orelly/perl/advprog/ch12_03.htm
http://www.unix.org.ua/orelly/perl/cookbook/ch07_15.htm
Bottom page, very useful
Open the file with sysopen, and specify the O_NONBLOCK option:
use Fcntl;
sysopen(MODEM, "/dev/cua0", O_NONBLOCK|O_RDWR)
or die "Can't open modem: $!\n";
If you already have a filehandle, use fcntl to change the flags:
use Fcntl;
$flags = '';
fcntl(HANDLE, F_GETFL, $flags)
or die "Couldn't get flags for HANDLE : $!\n";
$flags |= O_NONBLOCK;
fcntl(HANDLE, F_SETFL, $flags)
or die "Couldn't set flags for HANDLE: $!\n";
Once a filehandle is set for non-blocking I/O, the sysread or syswrite calls tha\
t would block will instead return undef and set $! to EAGAIN:
use POSIX qw(:errno_h);
$rv = syswrite(HANDLE, $buffer, length $buffer);
if (!defined($rv) && $! == EAGAIN) {
# would block
} elsif ($rv != length $buffer) {
# incomplete write
} else {
# successfully wrote
}
$rv = sysread(HANDLE, $buffer, $BUFSIZ);
if (!defined($rv) && $! == EAGAIN) {
# would block
} else {
# successfully read $rv bytes from HANDLE
} |
| 2005/3/4-6 [Computer/SW/Languages/Perl] UID:36520 Activity:high |
3/4 Rave: Chapter Two of Damian Conway's Object Oriented Perl is hands
down the clearest exposition I've ever read of perl modules,
namespaces, references, as well as local vs. my. I wish I'd read it
sooner. Well worth the just over $20 to get it as a PDF, and I will
probably drop the $40 or $50 needed for the dead trees edition.
Two pages later, it also features the clearest exposition of closures
I've ever read, and I'd highly recommend it to anyone taking 61A in
order to help get your head wrapped around the magic that is lambda.
-dans
\_ sometimes you can find editions cheap on amazon used books.
\_ Can I give you $10 and you mail me a copy of the pdf? -poor student
\_ 26$ for a "like new" used hardcopy from amazon.
\_ You can easily get a copy off of emule for free.
\_ Are you really so poor that you can afford $10 but not $20?
That's two, maybe three trips to La Burrita. Also, seeing as I
like Conway's work, I'd like to see him get paid and perhaps
write more at a later date. Why don't I arrange to donate a
copy to the CSUA library? -dans
\_ What I find depressing is how many people seriously don't
see a problem with paying money for IP they like, and stealing
IP they don't like. As if their subjectivity is any yardstick
to measure people's rights by. Or, if you like, as if stupid
people didn't have the same rights as everyone else. -- ilyas
\_ Fair enough. Do you pay for your copy of Windows and
every single warez you've had in your life?
\_ Yes, my copy of windows is paid for. I do not 'own'
any warez, and never have. Why must you assume everyone
is as much of a scumbag as you? -- ilyas
\_ I don't know aobut ilyas, but the one copy of Windows
I've ever used was legit (paid for by my company). I
also paid for all the software I currently use on my
Macs. Most of my other systems run either Linux or BSD,
and I don't have any commercial software on those systems.
At one point in my life (10+ yrs ago) I did have some
commercial software (mostly games, though I don't
think I ever had a license of MacDraw) on my MacSE,
think I ever had a license for MacDraw) on my MacSE,
but back then when you bought a computer you just
assumed that the stuff on the old hd was yours.
\_ Not only would this be illegal, it is also just plain wrong.
As a published author, nothing bugs me more than people who
feel that they somehow have a right to STEAL your work w/o
compensating you for it.
If everyone was like you and refused to pay for books, the
incentive to write (what little there already is - a tech
author may get ~ $2 per copy sold) will completely disappear.
Who wants to waste their nights and weekends (most of us
need real jobs b/c writing tech books doesn't come close to
paying the bils) if there would be no benefit beyond some
minor recognition on one's resume?
If the book helps you out, PAY FOR IT. </rant>
\_ I buy most of my technical books used. This is legal, however
the author still doesn't get any money. What do you think of
that? If authors asked used buyers to send them a couple
bucks, I'd do it, but I've never heard of such a system.
\_ I buy most of my technical books used. This is legal,
however the author still doesn't get any money. What do
you think of that? If authors asked used buyers to send
them a couple bucks, I'd do it, but I've never heard of
such a system.
\_ I have no problem w/ used books. The original purchaser
has already compensated the author. Once they bought
the physical book (or electronic copy), they can sell
it or give it away to someone else assuming that they
do not retain a copy for their own use.
\_ Just for shits and grins, why don't you try putting a
message in the next edition of your book that says
"If you really love this book and find it useful send
me a dollar" and see what happens. |
| 2005/2/25-27 [Computer/SW/Languages/Perl, Computer/SW/Languages/Python] UID:36415 Activity:low |
2/25 Any python guys on the motd? I'm trying to find a python equivalent
to $/ (the perl input record separator) so that I can parse a file
with odd record separators (ie, not \n). The data I got on google
suggests that no such thing exists, but those posts were from 2003.
Has support for this been added of late?
\_ string.split('record_sep_char') I think.
\_ Problem with this is having to read in data blocks from the
file, because otherwise there's an implicit split on \n
(which my records contain).
\_is the file really big?
f = open("/usr/dict/words")
f.read().split('record_sep_char')
I'm curious too if there's a better answer
\_ I don't do much work in Python so I don't know if this will
actually work, but my copy of Python in a Nutshell mentions the os
module has an attribute linesep which is set to '\n' on Unix and
'\r\n' on Windows. What happens if you try to set that attribute
to your desired separator before sucking in your file? -dans |
| 2005/2/17 [Computer/SW/Languages/Perl] UID:36220 Activity:high |
2/17 This *has* to exist: I'm working w/ a text file that uses ascii #2
for record separators and ascii #1 for field separators. Is there
a utility that will print out these ascii values for me, so I can
(for example) use them with command line awk and perl scripts? Ex:
fs=`atoi 1`
perl -pi e's/(.*)$fs(.*)/$1$fsfoobar/g' myfile.txt
Also, what would the actual perl syntax be for what I'm trying to
do with the above command? Platform is OS X. TIA
\_ perl -002 -a -F'\001' -lpi -e '$_="$F[0]foobar"' myfile.txt
OK, this sets in the input record separator to #2 (instead of
newline), sets the field separator to #1, strips the \002 from the
input and readds it on output (-l) and autosplits into @F on \1
--dbushong
\_ What about a function that just prints an ascii code -
printf("%c", atoi(argv[0]));
would be fine, it just seems ridiculous that this doesn't
already exist.
\_ In most shells, you can press ^V before a keystroke and have
that keystroke inserted literally, without being interpreted
by the shell. Thus, ^V^A would produce a literal ^A (ASCII
code 0x01), and ^V^B would produce a literal ^B (ASCII 0x02).
Alternatively, try fs=`echo -ne '\001'`. -gm
\_ Ah, that works very well, thank you. I also
discovered the perl function chr, which takes an int
and returns the associated ascii character.
\_ I think you meant argv[1], there, buddy. Anyway, it's
trivial, so why don't you write it?
\_ You're correct, and yes it's trivial, but so is the
command "yes" which repeatedly prints out "y" forever.
The thing is, I need to have other people run this
script for me, and I don't want to waste their time
with "ok, now run gcc -o asciify asciify.c" if asciify
already exists. |
| 2005/1/19-20 [Computer/SW/Languages/Perl] UID:35796 Activity:nil |
1/19 What's the difference between regular threads and threads created
with async in Perl? |
| 2005/1/16-17 [Computer/SW/Languages/Perl, Computer/SW/Languages/Web] UID:35734 Activity:high |
1/15 What's the easiest/best thing to use to quickly create small GUI
tools/apps for Windows? (cross-platform ok too) Like the equivalent
of a perl script with a Windows GUI. Only for myself right now but
I need to decide what to invest my time learning. So it might as well
be cross platform if there's no big downside. I have hardly any
experience with GUIs. Thanks.
\_ I have the same question but maybe not for a perl script, also
the GUI can be as simple as possible.
\_ perl/tk is decent, though you might want to look into VB if you
want to interact with the os. I'd advise staying away from
Java at all costs. --darin
\_ ya, sounds like VB is what the op is looking for.
\_ Is VB cross platform?
\_ and free? :( -op
\_ Performance aside, why no Java?
\_ http://wxperl.sourceforge.net
There's also APIs into wxwindows for Python and other languages.
I think it's what the original windows version of BitTorrent is
written in. --dbushong
\_ Ok I started playing with wxruby so I'll see how that goes, even
though it's beta. found at http://wxruby.sourceforge.net. |
| 2005/1/12-13 [Computer/SW/Languages/Perl] UID:35680 Activity:low |
1/12 How can I email a group of people individually if I have
a list of their email addresses and names, and I want each
email to begin with a personalized greeting (e.g. Dear Mr. A)
Any platform is ok. Thanks.
\_ write a script.
\_ This used to be called "mail-merge" in the days of paper
mail which needed to be printed. I'm sure a similar functionality
exists within most modern day email programs for something like
this, especially Microshaft Outlook.
\_ Oh please don't be a spammer.
\_ don't worry, I'm not; it's for school. -op
\_ anyone here work for a spam company?
\_ perldoc Net::SMTP
The remainder is left as an exercise to the reader. -dans |
| 2005/1/12 [Computer/SW/Languages/Perl] UID:35671 Activity:nil |
1/11 What does the @{ } syntax mean in Perl? As used in "man perldsc".
Oh nevermind I just read about references. Perl sucks.
\_ It's accessing an array, like @foo. The expression inside the
braces should evaluate to an array reference. See "man perlref".
\_ Yeah I just found that, thanks. |
| 2005/1/11-12 [Computer/SW/Languages/Perl] UID:35668 Activity:moderate |
1/11 FIX YOUR SPAMASS
3293 root 60 0 22512K 16640K RUN 42:15 12.74% 12.74% perl5.005
2610 root 60 0 22328K 8036K RUN 277:52 12.60% 12.60% perl5.005
amirs 3293 12.7 2.1 22512 16640 ?? R 4:08PM 42:18.75 /usr/local/bi\
n/spamd -a -c -d -m 5 -r /var/run/spamd.pid (perl5.00503)
s etol 2610 10.9 1.0 22328 8036 ?? R 3:29AM 277:55.77 /usr/local/bin\
/spamd -a -c -d -m 5 -r /var/run/spamd.pid (perl5.00503)
\_ pretty sad that spamass can run out of control like that
\_ It is. It might also be the fault of the ancient perl we're
running it on.
\_ I dunno, the docs I read specifically warn against
running spam assassin on large emails. (>250K)
\_ I switched from spamd to spamass after spamd kept dumping
huge cores in my home directory, putting me over quota.
Has this problem been fixed?
\_ I dunno, did you ever tell root that that was happening?
\_ No, I just switched to using spamassin directly. |
| 2005/1/11-12 [Computer/SW/Languages/Perl, Computer/SW/SpamAssassin] UID:35663 Activity:nil |
1/11 How do I set up a spam filter without hosing soda with perl processes?
(something running on soda, not in my Windoze e-mail client) Thanks!
\_ The best you can do is to run spamc (which uses the shared spamd
daemon) instead of running spamassassin directly. |
| 2004/12/29-30 [Computer/SW/Unix, Computer/SW/Languages/Perl] UID:35476 Activity:kinda low |
12/29 Is there a command like 'tail' that will read a file backwards?
Tail does not do what I want because of a limited buffer size. I
want to read the *ENTIRE* file backwards. Less doesn't work because
it relies on line numbers and the file is corrupted. (Essentially,
I can read 1-n and n+EOF lines but n itself is corrupt.) More/less
lets me read 1-n, but tail won't let me go back far enough.
(tail -100000 and tail -3000 are equivalent because of the buffer)
\_ you could pipe it through a perl script that reads the file
backwards, i can write a multi line one, maybe one of the perl
geeks around here will post a 1-liner.
\_ Thanks! I found a PM called File::ReadBackwards that worked.
\- hello, you can use the "tac" command or sed '1\!G;h;$\!d' --psb
\_ Tac looks cool, but seems to be a Linuxism. It's not on
soda, for instance. (Yes, it could be ported.)
\-tac is a random hack that probably predates linux.
portability is why i added the sed cmd. --psb
\_ if you use 'less +G' it doesn't actually try to figure out line
numbers, it just goes to the end of the file. You can then scroll
back ward normally. -ERic
\_ I tried this and it did not work. I went to the end of the
file, but when I tried to scroll back it attempted to
calculate line numbers even when told not to. |
| 2004/12/29 [Computer/SW/Languages/Misc, Computer/SW/Languages/Perl] UID:35468 Activity:moderate |
12/28 Does anyone have a good (free) program for converting .ogg to
.mp3? Either for Linux or Windows.
\_ CDex
\_ Download the official Vorbis tools and then use oggdec + LAME.
\_ Not recommended for Windows. On linux it's a one line perl script.
\_ Why is this not recommended for Windows? Can't you use a
one-line Perl (or even .bat) script there too?
\_ Because the Windows CLI is a piece of crap. Yes, you can
install cygwin, but by the time you go through the song
and dance of installing cygwin you could've already
converrted your ogg vorbis files to mp3 already with
CDex. Not only that, unlike Linux you can't simply
install an RPM/DEB or emerge in gentoo lame and oggdec.
You have to manually download each piece of software and
unzip it and path the directories correctly. It's just
a hassle. I mean, if you really want to write a batch
file go right ahead, but why bother? |
| 2004/12/17-19 [Computer/SW/Languages/Perl] UID:35343 Activity:high |
12/17 I am doing some simple subtraction on perl, and its generating
output like 8.39999999999998, how do I fix this? Thanks.
\_ Omg. I can't believe people ask this shit. Did you graduate
from Cal with a CS degree? You are a fucking disgrace.
\_ There are a significant number of non-CS majors here.
\_ There IS a significant number. Fucking disgraces, all
of you. Ugh. Go die.
\_ Wrong, dumbass. "A number of ___" is a plural noun.
"Are" is correct. Fucking disgrace.
\_ Agreed.
\_ you fix it by giving us example code or int($num + .5)
\_ I am doing something very simple, reading some numbers into
a variable, and subtract them. in my case, the number is
595 - 586.84, which should give me 8.16, but perl output
8.15999999999997, I need 8.16.... thanks...
\_ Like the poster below said, numbers like 8.16 can't be
represented exactly in binary, so you'll always get some
error. You can use $num = sprintf("%.2f", $num) to force
$num to have exactly two digits after the decimal point --
this also means that 8.5 will become 8.50, which is usually
what you want if you're dealing with money.
\_ And what is the precise binary representation of .84 pray
tell?
\_ Math::BigFloat
\_ If there's a specific precision you want, use fixed-point math or
round. |
| 2004/12/14 [Computer/SW/Languages/Perl, Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Misc] UID:35286 Activity:insanely high |
12/13 http://khason.biz/blog/2004/12/why-microsoft-can-blow-off-with-c.html Why Microsoft Can Blow Off with C the Language (humor/funny) \_ not really. -tom that's because tom holub is the anonymous humourless nuker _/ \_ Feel the babelfish flow through you. \_ Any body who thinks Fortran hasn't seen widespread acceptance hasn't spent much time outside of the world of software development and systems administration, methinks. Out where I do my civil engineering thing, Fortran is the standard langauge. -- ulysses \_ Not the law is clear? There is a beard - there is a success. There is no beard - you are guilty. |
| 2004/11/30-12/1 [Computer/SW/Languages/Perl] UID:35129 Activity:nil |
11/30 Perl question, I want to make a sub do_these which when called as
do_these(('foo','bar')); will call foo() and bar()
will something like
foreach(@_) { &$_(); }
work?
\_ Yup. If you get an error about "strict refs", add the line
"no strict 'refs';" at the beginning of sub do_these. --mconst
\_ I'd suggest looking through hoserchat source code (locate hoserchat
on soda) and look at how the function pointers are done there.
\_ mconst says I'm good to go, but the way hoserchat does it is to
use function references, not dereferenced fuction names. Is
this a TWTOWTDI situation, or is it illegal to dereference a
function name, since $_ will after all be a string?
\_ TMTOWTDI. Real references are sometimes safer: they work
regardless of what package you're in, and they keep working
even if the original function gets renamed or undefined.
(That's why "use strict" disables the ability to use a
function or variable name as a reference.) It's usually
not a big deal, though. The cool thing is that your code
will actually work either way -- if you want to use real
references, just call do_these(\&foo, \&bar) instead. --mconst
\_ OK, because I'm calling specific instances of a class function
(probably should have mentioned that) I actually needed to use
$self->$_ in do_each(), as &$_() just gave calls to member function
of an uninstantiated class. All in all, thanks a bunch to both of
you. -op |
| 2004/11/24-26 [Computer/SW/Languages/Perl] UID:35061 Activity:nil |
11/24 I was looking at the Perl CGI.pm and I noticed that most of its
functions existed only as source code stored in a big hash of
%SUBS = (sub_name => 'sub source') What's the reason for doing this?
\_ They compile the functions on demand, to reduce startup time.
\_ So if you make repeated calls to some of these functions, will
you see much of a performance hit?
\_ Nope -- once CGI.pm compiles a function, it becomes an
ordinary perl function with no extra overhead. On the other
hand, even that single compilation is a waste if you're using
something like mod_perl that precompiles your code, so CGI.pm
does have an option (-compile) to disable the hack and just
define everything at compile time. --mconst |
| 2004/11/22-23 [Computer/SW/Languages/Perl] UID:35028 Activity:kinda low |
11/22 How do I get find to return me a list of files with every questionable
character escaped by a backslash? ', ", ?, <space>, etc are
"questionable"
\_ find . -print0 | perl -0pe 'chop;s#[^\w/.,-]#\\$&#g;$_.="\n"'
(assumes you have perl and find which supports print0; both common
on modern boxes; also i specified the list of "OK" characters rather
than questionable ones; i think it's safer; note also that -print0
by itself may have been what you were looking for, since this will
possibly give you results like this:
file\ with\ newline\
in\ it.txt
(the newline is blackslashed, but that may or may not help you)
--dbushong
\_ Pipe it through perl -ne 'print quotemeta $_'
\_ Pipe it through perl -ne 'print quotemeta $_' --scotsman
\_ or just perl -pe 'print quotemeta'
\_ Er, no. perl -ne 'print quotemeta'
\_ Er, no. perl -ne 'print quotemeta' --scotsman
\_ perl -pe '$_=quotemeta'
-geordan
\_ Actually, perl -pe 's/./\Q$&/g'
-geordan
\_ That's slick, but the newline issue applies there.
--scotsman
\_ I guess
perl -pe 's/./\Q$&/gs'
would fix that, but it's still just getting
escaped. -geordan
\_ This doesn't work if any of the files have newlines in their
names. --dbushong
\_ Well, it escapes it, just as yours does. --scotsman |
| 2004/11/22 [Computer/SW/Languages/Perl] UID:35012 Activity:very high |
11/22 Dear Perl monkeys, how do I match a substring at the end of a string?
I want to match '.txt' but not '.txt.gz' or similar. -thanks
Something like if($filename <ends with> @valid_extensions) {}
\_ $ext = join '|',@valid_extensions;
if ($filename =~ /\.($ext)$/) { ... } # -geordan |
| 2004/11/19-20 [Computer/SW/Languages/Perl] UID:34983 Activity:nil |
11/19 I don't want logwatch to tell me that there were "134 messeges sent"
but I would still like to have it parse the maillog file. I can
comment out the line in the perl script in "scripts" but that
doesn't seem clean. Same with it telling me that my user has logged
in. I know my user logs in; can I tell it not to watch for me?
Is there a way to modify the .conf files in services to tell
it not to send this info? I've searched around a lot for this and
can't find anything. <DEAD>logwatch.org<DEAD> just has the man page for docs.
If anyone knows of some more extensive logwatch docs on-line,
it would be appreciated. |
| 2004/11/16 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:34922 Activity:high |
11/16 "sed '/^[0-9].*$/\!d' inputfile" will print out only the lines
of a file that start with numbers. Supposed I want to print out
the 1st, 6th, 10th, 16th, etc lines that begin with a number.
How can I do that elegantly with sed or perl or whatever?
\_ perl -ne 'print if /^\d/ && $count++ % 5 == 0' --mconst
\_ You can replace all the newlines with a new record separator (eg
"FOO") and then awk '{print $1, $6, $10, $16}'.
\- to do this either you need to understand a little bit about
how sed works and then write a little sed program OR if
you want a cryptic one liner, it heavily depends on the
version of sed ... i cant think of a simple way to do
this in "genreic sed" ... i assume your list doenst end
at 16 ... that is trivial. i think gsed supports the +5d
operator. --psb
\_ perl -ne 'print if /^\d/ && <compare $. as line #>' file
the compare could be e.g.: $. =~ /^(1|6|10|16)$/
--dbushong
\- if all you want to do is print out those 4 lines it is
' trivial ... sed -n -e '1p;6p;10p;16p' --psb
\_ This has to work for a file that is 100000 lines long. That's
what I meant by etc. I would have thought there would be an
elegent way to basically tell it to print the first line,
skip the next n lines, print the next line, skip the next n
lines, etc. -op
\_ Is n 5, 4, or 6? |
| 2004/11/8-9 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:34742 Activity:low |
11/7 Is there a shell command that will unsort (randomize) a file,
like the way sort does on a line-by-line basis? I don't need any
mathematical randomizing, just want to mix up my input lines
occasionally. tia.
\_ ~mconst/bin/shuffle
\_ i have some short code to do this. if the file is "large" [+32k ll]
it's somewhat tricky to do ... need a good random generator.
like perl's default doenst have enough seed values. why do
people ask stuff like this anonymously? --psb
\- this looks really slow to me:
/bin/time ./rand-mconst.pl < /tmp/infile > /dev/null
real 46.9
/bin/time ./rand-psb.pl < /tmp/infile > /dev/null
real 4.3
\_ What do you expect? One's an algorithm, one's a one line
hack.
\_ my stupid shell script that works fine for small files:
#!/bin/sh
awk 'BEGIN { srand() }{ print rand(),$0 }' $1 \
|sort|sed 's/^[^ ]* //'
\-I dont think this is portable to "classic awk" ... but
gawk is probably good enough. --psb
\- btw, i just stumbled, er shuffled, on to:
perldoc -q shuffle --psb |
| 2004/11/1 [Computer/SW/Languages/Perl] UID:34491 Activity:kinda low |
10/31 I've got a file full of names of mp3 files that I want to delete.
Problem is that many are contain ', (, ), and other unlikeable
characters that make it hard to feed to a bash for loop or a
perl script. Is there any (perl?) function to autoescape that
sort of thing? tia.
\_ Why not run the file through sed?
\_ perl -lne unlink filename.txt --dbushong |
| 2004/10/28-29 [Computer/SW/Languages/Perl] UID:34404 Activity:nil |
10/28 Has anyone had trouble building SpamAssassin 3.0.1 on RH 9? It seems
to have major problems, and I can't tell if it's SA's fault or
Redhate's. perl Makefile.PL yields a Makefile with stray single
quotes and truncated lines. google searches yield no help.
--scotsman
\_ No idea about that in particular, but can you generate the makefile
on some other system and copy it in?
\_ doesnt answer your question (this IS the motd) but it worked out
of the box for me on Solaris 9 and Gentoo 2004. Instead of using
the makefile, i ran:
perl -MCPAN -e'install Mail::SpamAssassin' |
| 2004/10/15-16 [Computer/SW/Languages/Perl] UID:34153 Activity:nil |
10/15 In Perl, what does
$| = 1;
mean?
\_ Flush write buffers after every write
\_ Flush write buffers after every write -scotsman
\_ why the strange syntax?
\_ There are many perl switch varibles. There are also named
aliases for almost all of them. read the perlvar manpage
for some mnemonic help -scotsman
\_ Perl has no other kind. -- ilyas |
| 2004/10/11-13 [Computer/SW/Languages/Perl] UID:34038 Activity:nil |
10/11 Perl web programming job at AmBusi. See /csua/pub/jobs/ambusi. -ali
\_ how much they pay nowadays and how's the job market? |
| 2004/10/7-8 [Computer/SW/Languages/Perl, Computer/SW/OS/Windows] UID:33976 Activity:high |
10/7 What is the best free mass-renaming application for windows? -thanks
\_ cygwin
\_ perl
\_ "ren *foo *bar" in Command Prompt.
\_ don't do that.
\_ why not?
\_ It would be bad.
\_ "Try to imagine all life as you know it stopping
instantaneously and every molecule in your body exploding
at the speed of light."
\_ <gulp> Total protonic reversal. |
| 2004/9/29-30 [Computer/SW/Languages/Perl] UID:33841 Activity:nil |
9/29 How do I use perl to delete some registry setting? such as
HKCR\Something. I want to automatically nuke the entry...
Thanks...
\_ From the 1st google result for 'perl registry'
http://jenda.krynicky.cz/perl/Registry.pm.html
Load the Win32:Registry module and go from there... |
| 2004/9/24 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:33738 Activity:insanely high |
9/24 I have a directory with a bunch of image files names DSCNxxxx.jpg.
What's the quickest way to rename them all to Dscnxxxx.jpg? (just
changing the capitalization of the first 4 letters).
\_ foreach i (*.jpg)
mv $i `echo $i | sed -e s/DSCN/Dscn/`
end
I'm a hardware engineer and even I can come up with something
\_ You're assuming the OP has csh access to the directory.
\_ Okay, the why don't you just "dir" the files to a
text file, send it to your soda account, write a script
to change the names (DOS batch file), and viola.
\_ ObCygwin
\_ I'm looking for a one-liner that actually works... this
gives me "i: Undefined variable.". This is on linux and I do
have csh access. The perl suggestion below is a good idea but
it's overkill for what I'm doing right now. -op
\_ In Perl:
#!/usr/local/bin/perl
#
# Usage: rename perlexpr [files]
($regexp = shift @ARGV) || die "Usage: rename perlexpr [filenames]\n";
if (!@ARGV) {
@ARGV = <STDIN>;
chomp(@ARGV);
}
foreach $_ (@ARGV) {
$old_name = $_;
eval $regexp;
die $@ if $@;
rename($old_name, $_) unless $old_name eq $_;
}
exit(0);
Use 's/DSCN/dscn/' for the regex at the commandline or just
modify the $regex variable.
\_ Your OS?
\_ What you want is a nice perl script that renames it to
YYYYMMDD_HHMMSS_xxxx.jpg. This is the way to archive images.
Besides the image, the time is the next most important thing,
but with Windows and day light saving time and time zone, and
that sometime you forget to set the camera's clock correctly
when you travel, relying on file timestamp and exif time is
really not a good idea. Embed the picture time into the filename
is a permanent way to record the time of a photo.
\_ If you are using 4NT, just do "ren DSCN* Dscn*"
\-ls | awk '{print "mv " $1" "$1}' | sed 's/ DSC/Dsc//' | sh
\_ This works in NT Command Prompt. You don't need 4NT.
\-ls | awk '{print "mv " $1" "$1}' | sed 's/ DSCN/Dscn//' | sh
--psb
\_ you should just use gsub in your awk.
\- as i said last time this came up on the motd, anybody
asking a question like this isnt going to be familiar
with complicated awk or sed, backrefs etc. So it's best to
make something easy to modify. i suppose i should have
used the nth match for sed. i would personally just do
this in emacs. --psb |
| 2004/9/22 [Computer/SW/Languages/Perl, Computer/SW/Languages/Misc] UID:33693 Activity:moderate |
9/22 I have a form that posts a heap of text from textarea box to a Perl
script that puts the info into a flat database file. I'm using
$in{'mytext'} =~ s/\</</g;
to change any html tags to harmless <>s, but how do I replace newlines
with <br>? I've tried:
$in{'mytext'} =~ s/^M/\<br\>/g;
$in{'mytext'} =~ s/\^M/\<br\>/g;
$in{'mytext'} =~ s/\n/\<br\>/g;
and I'm still getting ^Ms in my file. Help!
\_ ^M is \r, not \n. -tom
\_ Aren't HTML form lines ended with \r\n like Windows? And doesn't
Perl::CGI deal with this?
\_ (responding to myself) yes, it's \r\n (CR LF):
http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.2
\_ what would you want Perl::CGI to do with a textarea that
contains newlines, other than put the newlines in the
variable? -tom
\_ I couldn't remember if the newline was platform-
independent, but if it wasn't that CGI would have a
plantform-independent method of splitting/replacing/etc.
\_ This did the trick, thank you. |
| 2004/9/16-17 [Computer/SW/Languages/Web, Computer/SW/Languages/Perl] UID:33560 Activity:low |
9/15 Are there any opensource website management systems that will let
you create a site similar to http://cnn.com ? PHPNuke and Slashcode might
be able to work but doesn't seem to be quite right.
\_ PHP: Midgard: http://www.midgard-project.org
Perl: Mason: http://www.masonhq.com
--dbushong
\_ Sorry, I used the wrong term. I'm not looking for a CMS. I'm
looking for a tool/app? that let's me create nice frontend templates
can nicely display entries from either flat files or possibly,
a CMS. midgard and mason both seem like a good start though. tnx. |
| 2004/9/9-10 [Computer/SW/Languages/OCAML, Computer/SW/Languages/Perl] UID:33448 Activity:high |
9/9 Why are there so much politics on the motd? Isn't this the
CSUA? Doesn't the C stands for something computer??
\_ Its stands for Computer Stuff and Unrelated Arguing
\_ Golf clap.
\_ I didn't know there even was such a thing as a golf ho,
and you're telling me they've got their own VD's?
\_ Yeah, let's talk about computer, or girls!!
\_ When someone says something stupid, I feel I must succinctly show
them the error of their ways, or at least show other reasonable
people. Oh well, I'll just let stupid people keep thinking that
way.
\_ The CSUA as an organization doesn't manage or have anything to do
with the contents of motd.public. Politics get discussed so often
because it's one of those things that never ends. You never finish
the argument. And unlike more esoteric subjects for debate,
politics is something that anybody and everybody feels qualified to
participate in. Politics is always in the news. Other things show
up on motd many times but nothing more than politics. Or Perl.
\_ Hey, I would talk about programming languages, but not a lot
of people care. P.S. Perl is morally wrong. -- ilyas
\_ Methinks he doth protest too much. --dbushong
\_ SILENCE, SINNER!
\_ what do you think of ocaml?
\_ Ocaml is a language built around a type
inference system, and I think that's like
the tail wagging the dog. The bar for
languages is set so low that if people
see something with lambdas that's fast
they get excited. It shouldn't be that
way. -- ilyas
\_ Have you ever looked over Java? I've
generally found the structure of the
language really presents itself for
large SE projects. The string
manipulation elements built directly
into the language are pretty awesome
also -- they really cut down on the
dev cycle, I've found.
\_ Pontification is preferable to work.
\_ it wasn't like this from 1980s till the late 90s, when the
failed jobless laid-off dotcomers got bitter and started to rant.
\_ Obviously someone who doesn't remember the bitterness of
joblessness of the early 90s... |
| 2004/9/9 [Computer/SW/Mail, Computer/SW/Languages/Perl] UID:33427 Activity:moderate |
9/8 So, I asked this a few years ago, it seems there should have been
some progress on this front: A calendar server for linux?
Would be nice if it could work with outlook clients but not
mandatory, would be nice if people could update their Cals from
the web, would be nice if it was free. I'm looking at calcium
which seems like http://www.brownbearsw.com has just taken their
popular but kind of klunky (and not free) ical and ported it to
perl. [spelld]
\_ There exist a number of commercial products for Linux including
probably the ones from IBM, Oracle, and Sun/iPlanet but I don't
think they work with Lookout.
\_ Isn't there something from Ximian that apes all the nifty Exchange
stuff? Look around, there's quite a few things along these
lines. I believe Outlook is also fairly flexible in how it
synchronizes with various apps. For a nice web-based groupware,
look at phprojekt. I have some others lying around, mail me
if you want me to dig them out. -John |
| 2004/9/2-3 [Computer/SW/Languages/Perl] UID:33302 Activity:kinda low |
9/2 How do I use a variable expansion in perl regex? Something like
$PATTERN = ".*foofoofoo";
$_ =~ s/$PATTERN//g;
Basically I'd like a C #define style expansion of $PATTERN. TIA
\_ The above should work. You might want to add the "o" flag to
the s/// operator for efficiency if your $PATTERN doesn't change.
\_ Also, you don't need to say "$_ =~ "; it's implied. |
| 2004/8/27-29 [Computer/SW/Languages/Perl] UID:33194 Activity:low |
8/27 How do I get perl to read in a hex value from a file and store it
as an int? I basically want strtol for perl
\_ int(hex($value)) should give you what you want
\_ hex($value) should give you what you want |
| 2004/8/17 [Computer/SW/Languages/Perl] UID:32967 Activity:nil |
8/17 Is there a Maildir compatible equivalent of frm?
\_ Third hit on Google for: frm maildir
Come _on_ people
http://www.eyrie.org/~eagle/software/mdfrm |
| 2004/8/17-18 [Computer/SW/Languages/Perl] UID:32966 Activity:high |
8/17 My sister is looking to learn perl, but she's not really a professional
programmer. Can anyone recommend a decent perl book which isn't too
complicated? TIA.
\_ Learning Perl, 3rd Ed
\_ Seconded. You might be able to get it for free after mir
from fry's this week.
\_ Just curious. What for?
\_ Not really a professional programmer? Perl sounds perfect!
\_ Riiiight. Whatever, man. |
| 2004/8/13 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:32883 Activity:nil |
8/12 I am not a techie but I am trying to learn some perl to do
some text manipulation for my research. I am having trouble
with hashes. Can someone give me an example of how to read
in something like the password file (say, user, directory, shell)
into a hash?
\_ The question belies a slight misunderstanding of hashes. A hash
is a simple set of key value pairs, so reading a password file
in would require a bit of thought to the structure. You could
make the key be uid and the value be a pointer to an array of
the passwd line, i.e. (username,pw,uid,gid,gcos,hdir,shell).
You could alternately key on username. You could make an array
of hash references where each array member is like
username => 'root',
pw => '*',
uid => 0,
gid => 0,
etc. But using a single 1-dimensional hash on something like
an entire passwd file would yield you the data from the last
line in the file.
\_What would be the right structure to use to read in the
whole password table and hold it in a structure so I could
refer to some arbitrary piece of data like "the shell of
user user1"? Like if I wanted to merge the encrypted password
from the shadow file with the login and shell fields from the
password file? Thanks for your explanation.
\_ Now that you could do with a hash, but easier would be to use
(getpwnam('user1'))[8] to get the shell. But to do this for
the whole passwd file (as an example) would be
open PW,'/etc/passwd';
my %shells;
foreach my $pwentry (<PW>) {
chomp $pwentry;
($name,$shell) = (split /:/,$pwentry)[0,6];
$shells{$name} = $shell;
}
close PW;
Oh wait. I didn't catch the part about shadow password, but
this should give you an idea of where to start. |
| 2004/8/11 [Computer/SW/Languages/Perl] UID:32831 Activity:high |
8/11 Is there any way a shell or perl script can can input from keyboard
without showing it on the screen, such as for a password?
\_ man getpass/getpassphrase and write a helper program, or look
into using a curses library or similar.
\_ stty -echo |
| 2004/8/6 [Computer/SW/Languages/Perl, Computer/SW/Languages/Misc] UID:32750 Activity:high |
8/6 On Linux, how can I find out how much space a directory takes up?
(Including all it's files and subdirs, etc.)
\_ du -sk . -tom
\_ try windirstat (ok, it's not linux), it's awesome!!
\_ on Linux we just take such things for granted
(hint, du -k | sort -rn )
\_ windirstat is a lot more advanced than du -k. come on, this is
no longer the 80s.
\_ For each file, type ls -l. Copy that down in notepad.exe. Then
write a perl script to take the input you save in notepad.exe,
put a plus sign "+" inbetween the numbers and pipe it through the
'bc' command, take the output from 'bc' and print it out, send a
fax of the photocopy of your printout to your boss's secretary
asking her to ask him to approve the numbers, and don't forget that
at each stage you should have the security department double check
everything so you're not in a state of policy violation.
\_ ~jameslin/bin/dirstat is a lame awk script I made awhile back to
calculate this. --jameslin |
| 2004/7/27 [Computer/SW/Languages/Perl] UID:32492 Activity:high |
7/26 In Perl, s/.*/foo/g will match twice and produce foofoo but
s/.+/foo/g only once and produces foo. Why?
\_ Maybe because .* means zero or more, so it matches the zero too?
\_ .* first matches starting from the beginning of the string until
end, consuming all the characters. Then it tries to match the
empty string at the end of the string, and succeeds since it will
match 0 characters. .+ does not match 0 characters, so it does not
match the empty string at the end. |
| 2004/7/5 [Computer/SW/Languages/Perl] UID:31164 Activity:high |
7/4 Is there something like a macro in Perl? Couldn't find any in
the Camel book.
\_ If you truly need macros in Perl, you probably want AUTOLOAD.
Of course, if you truly need macros, Perl is the wrong language for
what you are doing. -- ilyas
\_ I don't know perl, but don't almost all interpreted languages have
some kind of eval function? If so, you don't really need macros;
you can build up a string and evaluate it.
\_ There is eval in perl, and yes I know I can use eval, but it
is highly inefficient as the same code gets recompiled N times.
\_ Standard motd answer: tell us what you're actually trying to do
and we'll tell you the right way to do it instead of what you
think you want to do.
\_ What I want to do is pretty simple. Assume Perl had #define
then what I want to do would be like
#define myMacro(a) if (flagP) {a} else {foo}
Basically I want macro as a time saving device, rather than
than the all powerful macro featured in Lisp.
\_ Why don't you just run your Perl source files through
the c pre-processor?
\_ Would cpp conflict with Perl's grammar? |
| 2004/6/29-30 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:31060 Activity:high |
6/29 I can't remember a bit of C syntax. I have funtion foo that
returns a value that I need to put in a variable. If that value
is not Null, I want to take some action. Will this work?
int bar = 0;
if(bar = foo())
do something;
\_ Someone should save this for the Classic Trolls Of All Time Hall
Of Fame. I wish I had thought of something so simple as asking
an arcane C syntax question. --lesser troll than op
\_ Maybe you should try an obscure Perl question.
\_ How about:
if(foo()) {something;}
\_ foo() can return NULL, so it's returning a pointer. Therefore
bar should be a pointer. Probably it's a char* pointer. So:
char* bar = NULL;
bar = foo();
if (bar != NULL) { // Do something. }
, or, if (!bar) { // Do something.} (but I like the previous one)
\_ The null pointer is just an integer equal to zero. If the
declaration of foo is 'void foo()' then 'if(foo())' will fail.
The NULL pointer evaluates to false.
\_ op said he wanted to store the value of foo() in a variable,
and also wants to check if it is NULL. (This is common for
text-parsing functions.) Hence the code.
\_ 1. if the declaration of foo is "void foo()", it can't even
return anything, and "if(foo())" won't even compile. What are
you trying to say?
2. There is nothing in the C specification that says NULL is
necessarily 0. Its value is implementation dependent,
although in almost all implementations it's 0.
\_ Not exactly. The preprocessor symbol NULL is guaranteed to
be 0, but it's not necessarily an integer type (it may be
defined to be (void*) 0). NULL is not the same as the "null
pointer"; the compiler transforms 0 in pointer contexts to
the appropriate null pointer, which may not necessarily be
all-bits-zero. --jameslin
\_ The answer is yes. The syntax is:
if (bar = foo())
| \_ Assign 'bar' to be the return value of foo().
|
\_ The value passed to 'if' is the result of the assignment, which
is the value of 'bar'. Any non-zero integral value will
evaluate as true.
\_ "if (bar = foo())" will work, but the compile will probably try to
be nice and warn you that you might have mistyped "=" when
you really wanted "==". To avoid such a warning, you can do
"if ((bar = foo()) != NULL)". With compilers these days, it'll be
optimized the same way as "if (bar = foo())" anyway if the value of
NULL is 0.
\_ And this compiler should be promptly thrown in the trash. In
over 10 years of C/C++ development, I've only been bitten by this
once or twice. Having to munge my code to avoid spurious
warnings only helps newbies who should quickly exit the rank of
newbie anyway.
\_ Isn't this based on the assumption that NULL == 0 or
some equiv. There is nothing in the standard (AFAIK)
that requires this.
\_ No. When a pointer converts to an int, it must convert
to 0 if it is NULL, regardless of the actual bit pattern
of the pointer.
\_ ic. tnx.
\_ Chill down. The compiler gives a warning, not an error.
\_ Spurious warnings make it difficult to find real problems.
Many software shops have a rule of compiling with no
warnings and no errors, so warnings are a problem anyway.
\_ Having to munge your code for spurious warnings is
a bad thing. However, I challenge your determination
that this particular one is spurious. I would want
all my developers to NEVER have an "if (bar = foo())"
statement. That's IMO, anyway. They can still do
it if they want; I wouldn't complain too much if
following the rule affected their productivity, what
with good people being hard to find.
\_ How many more coding guidelines do you want checked
in your compiler? Check it in lint instead. Why
should I have to avoid legal code because *your*
software shop doesn't like that? It's a common
idiom, and it takes all of 5 seconds to learn it.
\_ I don't think you really read what I wrote.
I believe if you got into a meeting with the
top 5 coders in your organization, they would
agree "if (bar = foo())" is bad form, but they
wouldn't bash it over your head, which is what
I've been saying. (Of course you can use whatever
you like if you're not working with other
programmers.)
\_ I did read what you read. Your complaint is
one of style, which is not what a compiler
should check--or at least the complier should
have a way to turn off all stylistic warnings.
\_ I agree with you that the user should be
able to turn off "stylistic warnings".
\_ You want to throw gcc in the trash?
\_ I was grateful of compiler warnings when I had a very sloppy
programmer working on my team. Eventually he was let go after
one year.
\_ Which is the right thing to do with sloppy programmers:
teach them or fire them. |
| 2004/6/27 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:31028 Activity:nil |
6/27 Stupid UNIX question: In a shell program, how do I read in
standard input? I want the program to take standard input
and manipulate it in some way and then output the result to
a file. Once I have the program written, I know how to invoke
it, but how do I, within the program, tell it to work with the
standard input?
\_ Read from fd 1:
while read LINE ; do echo $LINE ; done <&1
\_ If you just want to pass stdin through various external commands,
it's easy; just run them, and the first one will consume stdin if
it needs it; e.g.:
#!/bin/sh
awk '{print $2}' | sed 's/a/b/g' > file
will "just work". If you want to perform actual line by line
shell script programming, you'll have to do like the previous post
says. But really, if you're doing actual custom programming of
this type (i.e. not lots of external program invocations), you
almost certainly are better off using perl or <insert favorite
text munging language here> --dbushong |
| 2004/6/24-26 [Computer/SW/Languages/Perl] UID:31002 Activity:moderate |
6/24 I defined a function in Perl
sub myPrint {
&print;
}
And perl complains that it main::print is undefined. How do I
refer to the builtin print?
\_ print;
\_ But according to the camel book, &print; should pass the current
@_ to print while print; does not (I have tried).
\_ I don't believe that works for builtins
\_ Right, and it's deprecated even for functions. Just
say what you mean: print @_;
\_ Isn't the whole spirot of PERL that there is > 1 way
to code what you want? |
| 5/16 |