|
11/27 |
2004/5/31 [Computer/SW/Languages/Perl] UID:30503 Activity:insanely high |
5/30 Let's say I have a directory full of subdirectories, each of which has a number of files in it. How can I delete all subdirectories that have, say, less than 10 files in them? \_ fewer \_ There's no single standard command that will do this. You'll need to write something that will count files per directory, make a list of targets and pass that to rm. \_ might the "find" command help? \_ That is one part of one possible solution. What I would do is write the whole thing in perl. Perl has a built in find-like function, can opendir() and readdir(), and allow you to easily maintain state and lists of target dirs. It's a simple two phase process: 1) make target list, 2) kill targets. Obviously, you'll want to test your code in a test directory or you risk removing the wrong files. \_ mosquito. SLEDGEHAMMER! <BABAMMMM!!!!!!> \_ Uhm, yeah, the following are any different? \_ Exactly 80 chars: for(grep{!/^\.\.?$/&&-d}<*>){opendir D,$_;unlink if@{[readdir D]}<12;closedir D} --dbushong \_ More than 80 chars: sub z{my @a=`find $_[0] -type d -maxdepth 1 -mindepth 1`;chomp @a;@a}; for (z(".")) { print "$_\n" if scalar(z($_))>$n; } # --darin \_ A bit shorter and more correct: use File::Path; for(grep{-d}<*>){rmtree $_ if <$_/*> < 10} --dbushong \_ I don't think this works. scalar(<$_/*>) does not return the file count. In any event, the script deleted stuff it wasn't supposed to and didn't delete stuff it should. Good \_ I don't think this works. scalar(<$_/*>) does not return the file count. In any event, the script deleted stuff it wasn't supposed to and didn't delete stuff it should. Good thing I backed up. -- op \_ Yeah, it needs @{[ ]} around it like mconst's... but use his. And yeah, anytime there's a "shortest perl" contest on the motd, Caveat Executor. --dbushong \_ @{[<$_/{.,}*>]}<12&&`rm -r \Q$_`for<*> # --mconst \- hmm, there are some interesting ways to do this ... the exact details vary slightly based on things like, are all the dirs only one deep, do you count sub-subdirs are files etc. i think it is better to do this modularly rather than trying to save characters. here is one different approach: find -type f | xargs -n 1 dirname | sort | uniq -c | egrep -v '[0-9][0-9]' | grep / there are some obvious shortcuts or changes to make more robust [e.g. if there are spaces in name], if you are going to do this once or mutiple times, performance etc. [yes i know the dirname call is expensive ... that can be replaced, but if this is a one shot thing, debugging time is more expensive than machine cycles]. --psb \-and it admittedly relied on a hack to deal with the "less than 10 part" ... but all this is easily remedied. --psb |
2004/5/24-25 [Computer/SW/Languages/Perl] UID:30393 Activity:moderate |
5/24 Perl question: I have a match m/foo(.*?)bar(.*?)baz/; I want to format that into an output like "output $0,$1\n"; But I also want it generic for different patterns, so I can say: $pattern = "m/foo(.*?)bar(.*?)baz/"; $output = 'output $0,$1\n'; while ($input =~ m/$pattern/ig) { #put use current $0,$1 in $output here somehow } What's a good way to do this? \_ Not sure if this is what you want, but it's an idea: $input2 = $input; # make a copy while ($input2 =~ s/$pattern/$0:$1/ig) { # extract $0 & $1 ($var1, $var2) = split($input2, ":"); sprintf($output, $formatString, $var1, $var2); } \_ while ( $input =~ m/"$pattern"/ig) # will get perl to expand $pattern before using it in the test \_ The matching is working fine. That's not the question. -op \_ You don't need ""s \_ This modifies $input2 on the first pass, and with multiple matches in the string (note the /g option) this will return wonkey results. -op \_ This works: $pattern = 'foo(.*?)bar(.*?)baz' $text = "foo1bar2baz\nfoo3bar4baz\nfoo5bar6baz\n" while ($text =~m/$pattern/ig) { print "$1, $2\n"} Part of your problem might be that $n references starts at 1, not 0. --scotsman \_ Oops. I screwed up when typing it up in the motd. In my original code it's $1 and $2, not $0 and $1. I've corrected it above. But the point is I want the output string formatted as well. Like: $output = 'The $1 is a result of $2.'; or $output = 'I won't $1 before $2 o'clock.'; -op \_ okay then, replace "print" with "$output=". Wait. I'm misreading. Gimme a sec. Ah. sprintf will do what you want. --scotsman \_ No it won't, at least not if I don't know the number of matches ahead of time. This DOES work though: $output = eval qq{sprintf qq{$format}; }; -op \_ And there ya go. \_ Thanks for the suggestions BTW. The sprintf turns out to be superfluous. This works too: $output = eval qq{ qq{$format}; }; |
2004/5/12-13 [Computer/SW/Languages/Perl] UID:30196 Activity:very high |
5/12 Perl question, I want to replace nnn with xxx, ie, \nnnn -> \nxxx (that's a backslash followed by n, not a newline), s/nnn/xxx/ gives me \xxxn!! What to do? I want the replace to change everything except a literal \n that should stay as is... \_ I think s/(\\n)?nnn/$1xxx/ will do it. That's "match an optional backslash-n and nnn and replace nnn with xxx". \_ Alternatively, s/(?<!\\)nnn/xxx/ explicitly matches any "nnn" that isn't preceded by a backslash. You may or may not find this more intuitive. \_ ?<! is the syntax? how weird. \_ It's based on the older syntax of ?!, which looks ahead in the string: /foo(?!bar)/ matches foo but not foobar. When they added the ability to look behind, matching bar but not foobar, /(?<!foo)bar/ seemed like the least bad choice. Yes, it's a mess. The tentative perl6 syntax for this is /<!after foo>bar/, where <!after foo> is read "not after foo" and means "assert that the current position in the string is not immediately after something that matches foo". --mconst \_ I must say the introduction of actual English keywords (in regexps, no less!) instead of line noise is a philosophical novelty for Perl. Or maybe they added so much functionality that the pigeonhole principle hit them pretty hard, and they had no choice. -- ilyas \_ Heh. You might actually enjoy reading some of Larry Wall's rationale for the new regexp syntax; it includes quotes like: It should not be considered acceptable to define new constructs that contain a plethora of punctuation, but we've become accustomed to constructs like (?<=...) and (??{...}) and [\r\n\ck\p{Zl}\p{Zp}], so we don't complain. Check out http://csua.org/u/7af starting at "First, let me enumerate some of the things that are wrong with current regex culture." --mconst \_ But I *like* line noise! It makes me look brilliant at work. |
2004/5/7 [Computer/SW/Languages/Perl] UID:30089 Activity:moderate |
5/7 What's up with this? PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 63318 jenly 59 0 19648K 1192K RUN 625:30 67.53% 67.53% perl5.005 \_ What's with the anonymous question? -emarkp \_ you too can run the ps command. \_ make sure to use the -w flag \_ www \_ That has eaten up 11 hours of CPU time in the past 29 hours. \_ got pics? \_ looks like out of control spamassassin \_ is it a girl or a guy? If a guy, he needs to be squished. If a girl, I would like to touch her. \_ "Jennifer Ly" sounds like a girl. |
2004/5/6 [Computer/SW/Languages/Perl] UID:30061 Activity:nil |
5/6 Good job blowing away the motd, emarkp: emarkp 77172 0.0 0.2 1908 1380 DO I+ 4:39PM 0:00.07 /usr/local/bin/p\ erl /home/sequent/emarkp/bin/clean.pl /etc/motd.public \_ restored. \_ isn't changing the motd.public via a script squishable? |
2004/5/5 [Computer/SW/Languages/Perl] UID:30027 Activity:nil |
5/5 Why are huge perl processes getting run every few seconds? \_ show us show us! Who's abusing power? \_ I dunno, soda seems real slow to me today and I saw a few on 'top' taking a bunch of cpu but not right now. \_ It's not motdedit, is it? \_ Most likely spamassassin |
2004/5/4 [Computer/SW/Languages/Perl] UID:29993 Activity:high |
5/4 In perl, how do you know if an argument given is a scalar, hash, or array? \_ generally, the use to which it's being put. And the behaviour you see if you use it as a scalar. Maybe use strict or -wT might give you some helpful messages. -beginning/intermediate perl user \_ TYPES ARE FOR THE WEAK! \_ or for coders who don't know what they are coding \_ More to the point is why do you think you'd need to know in perl? \_ say you want to overload a method so it takes different arguments for backward compatibility. CGI.pm does that. \_ Don't know enough about perl to know, but perhaps for things like polymorphic function arguments? Perl is pretty ambigious about stuff like this... which is why I avoid using it for "real" code in projects. \_ in some cases you might be able to use ref($var) to find out what "type" of variable was passed: some of the return values are SCALAR, ARRAY, HASH and REF. (man perlfunc and search for ref). |
2004/4/29-5/1 [Computer/SW/Languages/Perl] UID:13473 Activity:nil |
4/30 My CGI script has gone from .120us to about .250us. How can I profile my Perl code without adding too much trash? For example, how much savings do I get by taking out "use strict", use modules, and other stuff? \_ WHY DO YOU HATE AMERICA? |
2004/4/27-28 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:13418 Activity:moderate |
4/27 How do I sort the output of lastlogin by time? \_ cool, we can figure out who are the motd posters!! \_ try /usr/bin/last instead \_ no, that's not the output i want. I really just want each person's last login. \_ learn perl. \_ foreach user (`cut -d: -f1 /etc/passwd`) last -1 $user end \_ grep -v "^#" /etc/passwd | cut -d: -f1 | xargs -I% last -1 % Pipe it again to sort as needed. Need more pipes!!! \_ /usr/bin/lastlog on linux. Trivial perl script on anything else. [why does someone keep deleting this?] |
2004/4/26-27 [Computer/SW/Languages/Perl] UID:13388 Activity:nil |
4/26 Trying to compile Perl on Darwin, I'm stuck on this line: ar -rc bar2.a bar2.o bar1.o Any reason why? ok thx \- did you run into problems with the case-insensitivity on the mac file system? that's probably a different problem but somthing i ran into building perl a while ago. --psb \_ Starting with 10.3, you can turn "on" case-sensitivity on HFS+, but there is no gurrantee that it won't create more problems than it solve. By the way, how did you manage to compile perl eventually? \- the general view seems to be fmting the fs with the case sensitivity option is asking for trouble as a number of tools dont expect this, such as some backup software. re: perl ... not's not hard to get around once you figure out what is doing on, e.g. configure = Configure = CONFIGURE. --psb \_ mac osx doesn't have perl included as a default?? \_ he's referring to Darwin, not OS X. |
2004/4/26 [Computer/SW/Unix, Computer/SW/Languages/Perl] UID:13379 Activity:nil |
4/26 How do I use sed or perl, etc. to delete all lines from a file before or after some pattern. For example, in vi, I could type /<pattern>dG or 1Gd/<pattern>. But how do I put this into a script? \_ I believe sed '/<pattern>/d' will do what you want. \_ No, that only deletes the line with the pattern. It doesn't do anything to the lines before or after it. \_ Sorry. Misread the question. \_ in perl you want something like: $skip = 0; open(INFILE,$infile); open(OUTFILE,">$outfile"); while (<INFILE>) { $skip = 1 if (/[pattern]/); print OUTFILE $_ unless ($skip); } close (INFILE); close (OUTFILE); \_ one line form: perl -ni -e'$skip=1 if /PATTERN/; print unless $skip' FILENAME Change "unless" to "if" if you want to print after the PATTERN \_ Thanks. \_ manning sed should reveal addresses. you can do: sed '/moo/,$d' to delete all lines after finding a line that matches the regexp /moo/. -ali |
2004/4/20 [Computer/SW/Languages/Perl] UID:13276 Activity:nil |
4/19 yay! Next version of boost::regex will support more Perl-like (or Javascript-like) pattern matches: http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1429.htm \_ what? boost? \_ http://www.boost.org It's a popular set of C++ template libraries. \_ Popular doesn't exactly describe it. It's the short list for inclusion into the next C++ standard. |
2004/4/12 [Computer/SW/Languages/Perl] UID:13154 Activity:nil |
4/12 What's a good perl module (cpan) that strips off all the html tags and javascript crap? And perhaps be smart enough to strip off menus and ads? Thanks. \_ lynx -dump <pagename> \_ s/<[^>]*>//g |
11/27 |
2004/4/10-12 [Computer/SW/Languages/Perl] UID:13129 Activity:nil |
4/10 In perl, can I make the program more portable by first checking if a module is available, then "use" or "require" it later? \_ I think you can do this with an exec call. Checking. no. i think i was thinking of using an eval block, but i can't quite get it to work. \_ You can set up a variables using single quoted strings with embedded use/require statements and necessary subroutine calls and then use eval to figure out which ones work at runtime. Here is a short example that returns a hash of @_ using either MD5 or SHA1 (which ever is found first, unless a search order is specified via $MODE): sub doHash { my $hashCmdMD5 = 'use Digest::MD5 qw(md5 md5_hex md5_base64);'; $hashCmdMD5 .= " md5_hex('@_'); "; my $hashCmdSHA1 = 'use Digest::SHA1 qw(sha1 sha1_hex sha1_base64);'; $hashCmdSHA1 .= " sha1_hex('@_'); "; my $hashCmd = ($MODE eq "MD5" ? $hashCmdMD5 : $hashCmdSHA1); my $hash = eval $hashCmd; if ($@ || !defined($hash) || $hash eq "") { $hashCmd = ($MODE eq "MD5" ? $hashCmdSHA1 : $hashCmdMD5); $hash = eval $hashCmd; } return ($@ || !defined($hash) ? "" : $hash); } \_ nice. where's that code from? yours? \_ This is modified from some code I wrote for work. I added $MODE for this example, so that one can get an idea about how this can work. |
2004/4/10-12 [Computer/SW/Languages/Perl] UID:13128 Activity:nil |
4/10 In perl, how do I get time precise to the milisecond? The CPAN module requires recompilation and root access to install it, I'm looking for something more portable. Thanks! \_ If you need to know the time, there's no portable way to do it without modules. However, if you just want a sub-second delay, you can do it with select -- for example, select "", "", "", 0.1; will pause for a tenth of a second. --mconst \_ you can always install modules as a user and add the libs to your perl lib path. |
2004/4/10-11 [Computer/SW/Languages/Perl] UID:13124 Activity:low |
4/9 Can one write a filename expansion pattern that, say, match all filenames without a '.' in it? This would be trivial in regexp but I can't see how to do it in sh. \_ I don't think you can do it directly (at least, not in a practical way). You can always run the output of ls through sed easily enough. Finer shells like zsh also have ways to negate wildcards, which may help here somewhat. \_ something silly like [A-Za-z0-9 _]* (etc,etc), but it really depends on your shell. in /bin/sh? eh.... This sounds like another of those motd problem where you're better off asking how you should solve the real problem instead of asking the tedious detail you got stuck on because you're lost in the forest looking at the trees. \- right. use ls,find,echo |fgrep -v . to generate the list. --psb \_ psb is right. sh's pattern is different from regexp so that char class cannot have wild card multiplier. \_ yes I know that but if you read what I said the point is I think he's doing the wrong thing. if he tells us what he's trying to do at a higher level this whole regexp problem will go away if he has a better general plan. his original q. seems silly. he could just as easily call perl or some other regexp compatible parser at that point in his /bin/sh program but that doesn't seem to be the point, does it? \_ I am not doing SA. I am just doing some spring cleaning of the hard drive on my home pc and wondered if there is a oneliner solution to a simple problem. It's faster to visually inspect than to learn perl. \- use emacs dired-mode --psb \_ ok then use either of psb's answers or use a different shell that can deal with a regexp. |
2004/4/7-8 [Computer/SW/Languages/Perl] UID:13054 Activity:low |
4/7 Is there a convenient way to get WHOIS information stripped of all the disclaimers and legalese? \_ perl. \_ Of course there are programming ways of doing it, but is there anything easy like a website or a flag or some alternate whois client? \_ grep |
2004/3/30-31 [Computer/SW/Languages/Perl] UID:12925 Activity:kinda low |
3/17 In Perl, how do I make variables have static types and type check for valid parameter/actuals? I realize that variables are untyped in Perl ($var can be 0.001 or "hello") but I'd like to have more strict checking so that errors would be caught ahead of run-time, Thanks, -java guy \_ use java. Seriously. You don't use perl if you want strong typing. If you want to clean user input, use regexps. But the closest thing perl has to typing is its data structures. The content of those structures can be... anything. --scotsman \_ Oh yes, as opposed to those lists of Objects Java has, where you have to use instanceof and casting to get what you want. Java is bad. Naturally any language in the ML family will work, as will Lisp strangely enough. Yes, Lisp actually has a fairly powerful type system that most people never use (using 'declare' and so on). -- ilyas \_ I only said "use java" because he signed as "java guy" --scotsman \_ You know, Ben, just because someone signs as 'heroin addict', doesn't mean you should give him bad advice. -- ilyas \_ You're always coming down on heroin, Ilya. -geordan \_ That's "coming down off heroin," geordan. Get yer drug lingo right. \_ you don't use java much, do you. it's not great, but it's not that bad either. i very rarely use instanceof, and 1.5 has parameterized containers. \_ You are right, I no longer use Java much, I am proud to report. While I am happy you almost never use instanceof and casting to get things out of lists in Java, it turned out to be a common enough problem that made them add templates. I mean my example is precisely the one given on Sun's site to explain why templates are useful. There are other problems with Java's types, for instance you can google for 'type spoofing.' I won't even get to other things wrong with Java. I think Paul Twohey has a long rant stored somewhere on this subject, on everything from primitive type handling to floating point. -- ilyas \_ Java Generics are not templates... Java Generics are not templates... \_ Yup, weaker than C++ templates. Though you know, the word 'template' is pretty ... generic. It's not like it applies exclusively to C++ stuff. -- ilyas \_ One way to find mistakes in perl is to 'use strict;' and to run with #!/usr/bin/perl -wT. At least this way you can find the obvious mistakes with input validation. Once you fix those, the only other thing you can do is to perform input validation in all of your subroutines. The biggest problem I find with perl is the lack of prototypes, which forces you to manually check @_ in every subroutine to make sure that the correct number of args were specified. There are extensions to perl that add this, but they aren't available on every system which makes it hard to write portable perl code using them. \_ You make this sound so difficult. "warn if (@_ != n)" \_ That doesn't do type checking for you. If you need the first two entries in @_ to be ints, the next two to be string, &c. its not do-able without manually checking each entry in @_. Prototypes (ansi-c style) provide that level of support for you. \_ Irrelevant. This is perl. use something else if you want typing. BTW, for the java-types, sometimes you don't have a choice. Ex. if you need to write a cli program java is a terrible choice due to the jvm startup penalty, the resource requirements (jvm needs ~ 10mb of ram compared with 700k or less for perl), and its lack of integration with libc (using Runtime.exec() in order to change file ownership, create symlinks, remove files, &c. is not workable). \_ So write in in C and stop bitching about it. -williamc \_ I used to write everything in C, but having to roll binaries for every odd-ball os/hw type just became a pita. Perl was a compromise, it is portable and has just enough system support for the things that I need to do. \_ Um, prototypes are built into perl and have been for a while: sub foo($$@) { ... } foo takes two scalars and a list \_ WHAT? What is the name of the variable then? It's a lot more clear if you use "sub foo($a, $b) { ... }" \_ The variable is, as always, @_. |
2004/3/25-26 [Computer/SW/Languages/Perl] UID:12845 Activity:nil |
3/25 I'm trying to get mysql working on my machine. I don't have root so I have to install DBI and other packages. How do I find out if the package is included in the default Perl distribution? I'm asking because test suites are failing due to not having certain *.pm files (DBD.pm, DBI.pm, etc etc). Thanks. \_ Look in /usr/lib/perl5, most sites install the stock perl modules there. The DB* stuff (except for DBD-File) isn't part of the def. perl distribution. |
2004/3/25-26 [Computer/SW/Languages/Perl] UID:12844 Activity:nil |
3/25 Do you need to install a special DBI module for PostgreSQL or it's built in Perl5 already? \_ AFAIK, you need the correct DBD module (Pg.pm) for PostgreSQL. This isn't part of Perl. On RH you can install a perl-DBD-Pg-1.x rpm which should include everything you need. On FreeBSD make install in /usr/ports/databases/p5-DBD-Pg should give you everything you need. \_ and of course apt-get install libdbd-pg-perl |
2004/3/20-22 [Computer/SW/Languages/Perl] UID:12778 Activity:nil |
3/19 In Perl, how do I do file descriptor jumps. I'm asking because I want to implement my own "tail -f" or "tail -100" where I can just find out the size of the file, then jump towards the end, and move around the files. THanks. \_ jumps? you mean seek() and/or fseek()? \_ tell me why would the UN want to give up its exploitation of making millions off Saddam and the Oil for Food program? what incentive for the UN to get rid of IRAQ's saddam when they are making millions. You want nothing more than to put the Iraqi people back under oppression so that the UN can make millions more off the poor Iraqi people exploiting the Oil for Food program. |
2004/3/19-20 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:12756 Activity:nil |
3/19 When I do substr($string, x, 1) eq "c" in Perl, is it smart enough to do (string[0]=='c') in lower level, or is it dumb to do it like strcmp(string, "c")==0? In another word how much optimization does Perl perform? I'm asking because performance is an issue but I don't want to use C. ok thx \_ umm...why do you think strcmp(string, "c") would be so slow? oh, right, because you're an idiot. \_ Profile your code. You will almost certainly be surprised to learn where the real slowdown is. -- ilyas \_ it won't be in this trivial string comparison, that's for sure. \_ Indeed not. -- ilyas \_ makes me wonder what they're teaching in Berkeley CS these days.... \_ Use C or another REAL programming language. |
2004/3/18-19 [Computer/SW/Languages/Perl] UID:12746 Activity:nil |
3/18 In Perl, I'm using a hash of a hash like the following: my $w=$CATEGORY{$c}; my %w=%$w; But after turning on strict, it no longer works and reports Can't use an undefined value as a HASH reference at bin/categorize.pl line 72. What am I doing wrong? Thanks. \_ What does $CATEGORY{$c} return? A hash? you probably want a reference to it, not a copy. And that would help you sort out the access on the next line. \_ You probably mean "%w = %{$w}", but why not just use the pointer? -scotsman \_ I'd like to use %w like $w{$key}=$val. So can I actually reference/deference in Perl? Problem with Perl is I don't know when I'm copying by value or copying by reference... \_ Well, the first line there is copying by reference. My correction of the second line copies by value. The %{} is a dereference as well as a "cast". -scotsman \_ same problem even with cast, whats wrong? \_ ok I just found out that when I set to use strict, %CATEGORY becomes empty even though I made it public by "use vars qw (%CATEGORY)". So now I'm just scratching my head... NEVERMIND I found it's a logic problem and _/ has NOTHING to do with use strict. I really like "use strict"! I've caught a lot of bugs with it. |
2004/3/17 [Computer/SW/Languages/Perl] UID:12736 Activity:nil |
3/17 In Perl, when I "use strict;", how do I declare a global array or global hash? use vars qw (@ASSOC, %KEYHASH); doesn't work... \_ At the start you can declare "my @array", and everything in that scope or below will see it. --scotsman \_ It should be: use vars qw(@ASSOC %KEYHASH); (no comma) I believe in perl >= 5.6 you can say: our (@ASSOC, %KEYHASH); --dbushong |
2004/3/17 [Computer/SW/Languages/Perl] UID:12735 Activity:nil |
3/17 Say I have a CGI in Perl and I want to call another script, and it happens to be another Perl script. How to invoke it without using system(...), which will actually make it slow? \_ make the other script a module and import it. \_ ``, system, or as the person above said, create a module and import it |
2004/3/16 [Computer/SW/Languages/Perl] UID:12696 Activity:nil |
3/16 In perl how do I make it so that it checks for variable undeclared because it's really annoy how it ignores errors like that. ok thx \_ #!/usr/local/bin/perl -w use strict; \_ I prefer #!/usr/bin/env perl and $^W=1; (or $WARNING is clearer) |
2004/3/15-16 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:12666 Activity:low |
3/14 Is there a function that takes a string and then escape all spaces and control chars in it and return a string suitable for use as say a filename in a shell? tia. \_ "function" in what, c, the shell, ...? \_ in some more or less widely available library of C functions? \_ Something like perl's quotemeta? --scotsman \_ No. But if you want to look at an example look in openbsd's ksh. IIRC, the function is called x_escape and is in edit.c. \_ Thanks. One would have thought something has useful as this should make it way to some standard lib. Not that it is that difficult, but why reinvent the wheel or copy other's work? |
2004/3/9-10 [Computer/SW/OS/Linux, Computer/SW/Languages/Perl, Computer/SW/Security] UID:12588 Activity:nil |
3/8 Where can I find the definitions of the 3 timestamps associated with a file on a linux system: "Access Modify Change" \_ On most OS's that informaion is in the ls man page. Or do you need something more detailed? \_ Yes, I need to know the exact technical definition of "Changed" in this context. I'm trying to track down when/how my /usr/bin/perl file got changed from the debian "stable" version to the "testing" 5.8.2 version. Thanks. \_ is man 2 stat sufficient? \_ Yes siree. Perfect. Thank You! |
2004/2/27-29 [Computer/SW/Languages/Misc, Computer/SW/Languages/Perl] UID:12439 Activity:high |
2/27 In perl, say I have a @list of strings, how do I print the first character of those stings, concatinated? For example, if @list is ['hello','world',123], I want an output of hw1. I can do a loop, substr, and the .= operator, but it looks lame... \_ what's wrong with just doing what works? \_ TMTOWTDIT, but foreach $item (@array) { print substr($item,0,1) } is one way. -tom \_ map { print substr($_,0,1) } @array or $output = map { substr($_,0,1) } @array \_ The latter doesn't work, because it calls map in scalar context; you need $output = join "", map { substr($_,0,1) } @array. \_ (dolist (i array)(print (char i 0))) -- ilyas \_ gee you're clever. \_ Array.map (fun x -> print_char x.[0]) array p([[X|_]|Y]):-print(X),p(Y). Incidentally, I know of multiple cases where a Perl programmer benefitted from seeing a solution in another language. But I respect your anonymous snide remark anyways. -- ilyas \_ Because we all know that anyone posting anonymously is also less intelligent and has invalid points. I post anonymously to cloak my inferiority to you and others who are so smart because you sign your names. Really, it's just jealousy. Anonymity is a form of envy. I think I'll start signing all my posts so I envy. I think I'll start signing all my posts so I anyways. -- ilyas can be just as smart and well likde as you! can be just as smart and well liked as you! -- ilyas \_ you're pathetic. -intelligent, valid anonymous guy \_ wow I can't believe how many ways there are to do this. Here is the ultimate question. After parsing, internal representation, and optimization in Perl, which one of the above gives you the quickest runtime? \_ Depends on the size of your array. Generally map is faster as length @array gets larger. \_ what are you implying, that the function "foreach" expands the representations in memory (extra malloc maybe?) and then goes through the elements? For example "foreach $a (1..10000)" does an expansion, and that "foreach $a list" does the same thing? \_ I'm not implying anything. Everything I say is emperical experience. I leave the internals as an exercise to the reader. \_ That's all bullshit. array.each {|i| print i[0].chr} \_ Prolog is shorter: p([[X|_]|Y]):-print(X),p(Y). -- ilyas \_ I'm not convinced that's really shorter. How is that used? I don't know much about Prolog. Given a list called "Array", how do you print it? \_ p(Array). -- ilyas \_ As I suspected. So it ain't shorter! \_ In some sense, 'array' in your code and '[[X|_]|Y]' in mine are equivalent. Both are internal variable names for some data. What you were asking me to do is something else, namely provide a function call wrapper to the code, which isn't what your code does. I think the original stands as an equivalent to yours. -- ilyas \_ In some sense, that code and your code are given the same input. You rule! equivalent because they produce the same output given the same input. You rule! -- ilyas \_ Well I could say [].each{|i|putc i[0].chr} \_ Given an array "array", it prints the characters. It's a function call. No? (It's ruby, for anyone who doesn't know...) \_ Given an array "[[X|_]|Y]", it prints the characters. Prolog names can have structure built in. -- ilyas \_ cool. btw i shortened it again. array.each {|i| print i[0].chr} built in. -- ilyas \_ Well I could say [].each{|i|putc i[0]} [].map{|i|putc i[0]} Is that longer than Prolog? I'm no ruby expert so I'm not sure if there's anything better there. \_ Yup, you win. You can look here for more examples me, dbushong and some others came up with: http://www.bushong.net/david/comparisons \_ cool. btw i shortened it again. \_ you rock! -- ilyas -- ilyas \_ cool. btw i shortened it again(2) |
2004/2/24-25 [Computer/SW/Languages/Perl] UID:12378 Activity:nil |
2/23 I need to come up with some sort of scriptable solution for controlling various hardware-- we already have an interface that accepts string-based commands over a socket, but no way to control it via script (e.g. with variables, if/then/else/while, error recover/reporting). Would perl be good for this sort of thing, or are there simpler, more focused languages/modules available? \_ I'm not exactly sure what your situtation is, but FORTH is often used as a language to control hardware. It's small, effecient and easy to write interpreters for (there are quite a few embeddable forth interpreters out there). \_ Python 1.5 runs on vxWorks, if you are running that OS. \_ Expect. \_ perl is good to know in any case. |
2004/2/21-23 [Computer/SW/Mail, Computer/SW/Languages/Perl] UID:12341 Activity:low |
2/21 What's the best tool to convert raw network traffic captured on the wire into something useful? I'm currently reading the unparsed output from ngrep, tcpdump and similar tools but I'd like to see that turned into the real thing. For example, I want to see an output log that says machine X went to host/port Y/y to grab URL Z for http connections. I want emails going by saved out in mbox or other human readable format. Does such a thing exist? I started to write \- yes, but you have to email me --psb \_ why not posted it on the web? I was looking for something \- because as a general matter these anon requests are annoying. i can understand for a dumb question or a contentious issue but not in a case like this. i suppose if you are widely disliked on sloda, that might be one reason to ask for help anonymously. --psb \_ maybe some people don't want their name attached with looking for software to read raw network traffic. the world just isn't as open minded and understanding as you are, partha. like that monitoring LAN network to spot abuses on company's network, mainly to spot p2p client use at the office --kngharv \- if you want to look for p2p, that is a matter of looking for the protocol. as a general matter compliance issues are easier to deal with because you can do offline rather than realtime detection [offline = run on tracedumps]. of course if you want to use something like kazaa obliterator, then you need to detect in realtime ... or not too lagged batch proc. what is this "web" you speak of. --psb my own in perl but then realised I can't be the first person to ever need this. Thanks! \_ fantastic GUI utility called Ethereal. Available binaries for windows, linux, solaris. source available. I've used it only for reading traffic at the packet level, but perhaps if you want application level stuff (eg, emails as opposed to SMTP packets or whatever) perhaps you could write that yourself since its open source. - rory \_ Etherpeek \_ If it doesn't have to be graphical, you might want to consider hogwash (snort-based IDS.) Also, although it's more of a toy than a tool, take a look at Etherape. -John \_ use Etherape before. I find it not as useful as I would like to be. Only thing cool about it is that it color coded traffic from different ports. This feature allow me to spot p2p client (most people uses p2p don;t bother with port changes), and it is pretty good for detecting infected computer which eat up all the bandwidth. \_ Like I said, it's sort of a toy, although useful to get an overview of traffic patterns. What I find really hilarious (almost totally useless as a tool) is driftnet. |
2004/2/11-12 [Computer/SW/Languages/Perl] UID:12211 Activity:nil |
2/11 What's the best way to compare the similarity of 2 files using the Bayes NSP package: http://www.d.umn.edu/~tpederse/nsp.html ? count.pl gives me a lot of useless numbers... |
2004/2/2-3 [Computer/SW/Languages/Perl] UID:12077 Activity:nil |
2/2 Trivia of the day: what does this do? n = ((n >> 1) & 0x55555555) | ((n << 1) & 0xaaaaaaaa); n = ((n >> 2) & 0x33333333) | ((n << 2) & 0xcccccccc); n = ((n >> 4) & 0x0f0f0f0f) | ((n << 4) & 0xf0f0f0f0); n = ((n >> 8) & 0x00ff00ff) | ((n << 8) & 0xff00ff00); n = ((n >> 16) & 0x0000ffff) | ((n << 16) & 0xffff0000); \_ [formatd] \_ I'm just guessing, but possibly reverse the order of the bits in n. \_ um, are you sure it's O(n)? ARE YOU SURE??? \_ um, wtf are you responding to? \_ um, he doesn't know! he ISN'T SURE! \_ nothing interesting but if I cared I could run it through perl or wrap it in C syntax but I don't care. |
2004/1/30-31 [Computer/SW/Languages/Perl] UID:29772 Activity:nil |
1/30 Was Larry Wall a real person? \_ Still is. \_ He was when he autographed my 1st. Ed. Programming Perl. \_ Yes, I was. --Larry Wall \- "I AM" --lwall@netlabs.com |
2004/1/30 [Computer/SW/Languages/Perl] UID:29770 Activity:nil 61%like:12025 |
1/29 Looking through some Perl files, and I noticed some files with a line consisting of just a "1;" at the end. What does that mean? - perl newbie \_ return code. \_ thanks. \_ When you "require" another file, it runs through and expects a "true" value at the end. ergo, 1;. It's in effect a return code, but for a different reason. \_ thanks, makes sense now. |
2004/1/30 [Computer/SW/Languages/Perl] UID:12025 Activity:nil 61%like:29770 |
1/29 Looking through some Perl files, and I noticed some files with a line consisting of just a "1;" at the end. What does that mean? - perl newbie \_ return code. \_ thanks. \_ When you "require" another file, it runs through and expects a "true" value at the end. ergo, 1;. It's in effect a return code, but for a different reason. \_ thanks, makes sense now. |
2004/1/29-30 [Computer/SW/Languages/Perl] UID:11993 Activity:moderate |
1/29 I have a bunch of ^\ chars in my (allegedly XML) file. I'd like to squash them with perl or php or some such. How can I? \_ I assume you mean "control backslash". Just use perl regex \_ I assume you mean "escape backslash". Just use perl regex to replace. Regex for escape is \cX where X is character after escape sequence. So perl -pe 's/\c\\//' filename -williamc \_ tnx, perfect. (i didn't know \c and the per tutorials i to replace. Regex for escape is \cX where X is character after escape sequence. So perl -pe 's/\c\\//' filename -williamc escape sequence. -williamc \- ObEmacs looked at didn't say) -top \- ObEmacs \_ ObSed |
2004/1/15-16 [Computer/SW/Languages/Perl] UID:11785 Activity:kinda low |
1/14 I'm trying to flush output to disk after each write. This never writes to disk. What am i missing here (the file is being created): #!/usr/bin/perl $|=1; open(TEST,">test.txt") || die "Can't open: $!"; print TEST "Testing\n"; while(1) {} \_ call system's synch ? \_ $|=1 is supposed to flush after every print/write... \_ You forgot to call "select STDOUT" or "select TEST", because $| bind to the last selected file descriptor. \_ dear motd god, you're suppose to delete useful replies. where are you? \_ not even the censorbotidiot has the nerve to kill this perfectly helpful response. |
2004/1/10-11 [Computer/SW/Languages/Perl, ERROR, uid:11740, category id '31298#3.875' has no name! , ] UID:11740 Activity:nil |
1/9 Stupid chick. If you're bored and want to put her in her place, write to Beverley_Sweeney@birdville.k12.tx.us. http://www.dfw.com/mld/dfw/news/columnists/dave_lieber/7643262.html \_ That's what you get for using Windows... Thankfully they didn't install Linux/BSD on their machines and have someone discover wall.... \- i guess you young'un dont know about the time jordan hubbard "rwalled the whole internet" from evans hall ... including either the head of DARPA or the IG, something like that. --psb \- googling for jkh and rwall ... --psb http://www-mice.cs.ucl.ac.uk/multimedia/misc/tcp_ip/8702.mm.www/0310.html \_ May I ask how you even heard about this in the first place? Do you live in Dallas? \_ It was on slashdot yesterday. Anyway, it was the principal's decision to suspend; he should take a good part of the blame too. - !op \_ It was on fark; I don't recall seeing it on slashdot, but who knows. Anyway, she, not the principal, is supposed to be the computer teacher, and I'd assume she's the one that did most of the convincing that it wasn't harmless, but was (here I would wiggle my fingers and say ooooh) "hacking." -op \- The CSUA ought to send a letter about this. --psb \_ Like what? "We, the members of CSUA, an official and prominent organization of Berkeley's CompSci/EECS dept. think you are an idiot. Have a nice day" \- what do you suggest the CSUA do to justify itself? anything beyond running a wall apppliance and various junk-food related activities? if you dont think there is more to say than "you are an idiot" well i suppose i'll be charitable and not recyles those words and just suggest maybe you should not be the one to write the letter. --psb \_ You gotta be kidding me, right? I mean, if you want the CSUA to do something worthwhile then I can think of ten things better than writing a letter to a middle-aged elementary schoolteacher about the nuances of hacking. I mean, if you really have that much time on your hands to bother the poor woman why don't you do something like go teach a class on Perl open to all? Wouldn't that be much more fucking constructive than spamming an obviously close-minded and pea-brained bible-belter? And yes, I have donated my time to teaching DeCal classes in the recent past. How does contributing to the slashdot flamefest she's already getting really change anything? Get a clue. -williamc \_ Because we don't have to send the typical idiotic slashdot spam crap. Making a small change in the social fabric for the better is way more important than teaching some friday Perl classes. \_ That's not a bad idea actually. \_ You write it Partha and I will sign it. |
2003/12/30-31 [Computer/SW/Languages/Perl] UID:11615 Activity:nil |
12/30 When the forecast says 50% raining at 10AM, does it mean it will or will not rain? I'm asking because most of the time when they say 50%, it doesn't rain, so it's definitely not 50/50. \- it depends wheather it is a Baysian weatherf'caster or a a Frquentists F'caster. --psb \_ that was actually very funny -nivra \_ i don't get it. \_ if you don't work at sea and you listen to the weather forecast, you are a pussy. \- it depends wheather it is a Baysian weatherf'caster or a a Frquentist F'caster. --psb \_ why the fuck can't you format your posts like everyone else? do you hit the tab key two extra times in each line when you write code also? \_ easy: he's a lazy SOB and thinks he's better than the rest of us. \_ or he just doesn't know how to configure his editor properly. \_ He has yet to see evidence to the contrary in most posts to the motd. --psb #1 fan \_ CONVERT OR DIE. -- Bayesian \_ that was actually very funny -nivra \_ i don't get it. \_ u are swine to psb's perl. \_ It means that weather forecasting is impossible. \_ It doesn't mean anything. Those numbers are essentially yanked out of their asses. \_ It means that given the present conditions in the past, 50% of the time it has rained. \_ Rain, rain, go away! Come again some other day! \_ We need the water. \_ Let it rain when I'm not around. And stop draining so much water from the Colorado. You use too much. Fuckers. |
2003/12/3 [Computer/SW/Languages/Perl] UID:11304 Activity:very high |
12/2 What's a quick way to find the length of the longest line in a file? \_ perl -p -e'print length $_; s/.*//' <file> |sort -n|tail -1 \_ perl -pe 's/.*/length/e' \_ perl -pe 's/.*/length $_/e' \_ perl -lpe '$_=length' however this automatically chomps the trailing newline, so you'll need to add 1 to the result if you care about them. -geordan \_ what does the l do? which perldoc describes cmdline args? \_ man perlrun \_ awk '{print length}' \_ awk '{L=L>length?L:length}END{print L}' <FILE> \_ perl -pe 's/.*/length $_/e' -geordan no sort or tail needed. beat that! |
2003/11/13 [Computer/SW/Languages/Perl] UID:11056 Activity:nil |
11/12 I like the proposal below. I motion a Divestiture of MOTD, splitting motd.public into baby motd's. Partition it into motd.jokes, motd.politics, motd.technical (IMPORTANT), and motd.troll (for misc). \_ Ok, whatever. Might as well just setup a web based message board. \_ http://www.csua.org/motd \_ Yes? \_ Nah. Well, we could start a proposal for people to tag their posts with what type of post it is. It could be just two types for now. Then use a simple perl-filter script to read the motd. \_ Uh, yeah, like that would happen. How about people just skip over the threads they don't find interesting? |
2003/11/12 [Computer/SW/Languages/Perl] UID:11036 Activity:nil |
11/11 Argh. Why isn't this working? perl -p -i.bak -e 's#\n\n#\n#gsm' foo.cc I've got to change /* comment */ int TO /* comment */ int \_ man perlrun, and look at the explanation of -p. --scotsman \_ s/^\n// worked for me. and no emacs needed. \- you can use an emacs kbdmacro, then use the macro2elisp "complier" and then tweak the function to do this. there might be a simpler way to do this with query-replace* ... depends on the exact details. --psb \_ I wound up doing s/\n/FOOBAR/g; s/FOOBARFOOBARint/FOOBARint/g; s/FOOBAR/\n/g; . That's it. Fuck this, I'm leaving. And thanks for the suggestions. \_ The reason it didn't work is b/c -p only gets one line at a time, so the entire string you get to match is, for instance, "/* comment */\n", not the 3 lines you were looking for. Getting rid of the \n's first let you have it all on one line. \_ perl -p -i.bak -e 's#^\n##' foo.cc |
2003/11/11-12 [Computer/SW/Languages/Perl, Computer/SW/OS/Solaris, Computer/SW/Unix] UID:11030 Activity:low |
11/11 ls -lt lists all files in a directory in chronological order. For files nearly a year old, it only lists the date, but not the time, of last modification. But it lists them in non-alphabetical order. Thus, I suspect it is indeed listing them in order of most recently modified. So, then, it presumably knows the modification time. How can I get it to list the modification time, rather than the year, for older files? \_ get the ls that comes with GNU coreutils. it shows both date and time, but only up to hour and minute. \_ Try -T, works on FreeBSD \_ Whoa, that's really useful, never knew about that; thanks! Too bad it's not standard. -!op \_ works here, but not on my machine at work. \_ which runs....? \_ Solaris \_ Solaris follows the POSIX standard \_ Maybe try /usr/xpg/bin/ls ? \_ Try tarring up the file and scping it to soda \_ As with all problems, this can be solved with perl: alias ls-lt to: perl -e 'chdir$ARGV[0]if@ARGV;opendir D,".";print scalar localtime $_\ ->[0]," $_->[1]\n"for sort{$a->[0]<=>$b->[0]}map{[(stat)[9],$_]}grep\!/^\../,readdir D' (note the \'ed ! to make your shell happy). Then you can just say % ls-lt /tmp % ls-lt etc. and get the full dates. --dbushong \_ or you might even be able to do tar tf on the tarfile |
2003/10/26 [Computer/SW/Languages/Perl] UID:10790 Activity:nil |
10/25 The amazing web site reverser! Use any http://url.mirror.sytes.org, for instance: <DEAD>www.cnn.com.mirror.sytes.org<DEAD> Search the web for satanic messages! \_ Wow! Amazing! They ran web pages through perl's string reverse function! Wowowowow! \_ Actually, it's a little more interesting than that. The layout of the page also undergoes a vertical flip, though with varying degrees of success. It would be cooler if they flipped the images too. \_ They do flip the images. \_ Not on cnn, at least. of the page also undergoes a vertical flip. |
2003/10/21-22 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:10725 Activity:moderate |
10/21 Hi is there a small utility on unix that can replace a word in a file? \_ perl -p -i .bak -e 's/oldWord/newWord/' file. If you want to replace all instances of oldWord with newWord, use 's/oldWord/newWord/g' \_ Actually, without the g it will replace the first instance of oldWord in each line. The g makes it replace every instance of oldWord per line. -geordan \_ Lots. Try sed. \_ the oneline perl script works great with one file. Is there a way to have it process whole bunch files like *.*? \_ Um... perl -p -i .bak -e 's/oldWord/newWord/' * \_ uh no, got an "invalid argument" error \_ here's where you copy paste the exact command you used along with exact error you got, and we go from there. |
2003/10/21-22 [Computer/SW/Languages/Perl, Computer/SW/Languages/Misc] UID:10722 Activity:kinda low |
10/21 I'm trying to write a Perl script with a spam assassin interface so that it'll take out trolls. Please keep up the troll keywords thread below so that I can make the program as perfect as possible. \_ You mean an auto-motd-censor script? I thought these were grounds for sorrying of account. \_ it damn well better be. hey op, go fuck yourself. we know who you are. \_ no no no, no AUTO motd script. Yes, auto motd scripts can get you sorried (case in point dumb ass kchang). My point is creating something that allows me to kill threads that I personally deem as troll with one push of a button instead of having to do it manually. So short of complete automation I believe what I am doing has no grounds for sorried account \_ it just makes you a fucking asshole. \_ If you can do this, then why not create a motd reader that simply doesn't display threads with these words in them? \_ because it isn't about him not seeing it, it's about an infantile need to control what others read. \_ how about an auto script that corrects my grammar on motd post? \_ how about an auto script that purges your account? \_ do you really want to get into scripting wars over the motd? it's been very calm all these years (mostly). if you turn it into a script war you'll find others writing scripts to delete the stuff you've deemed worthy of staying. when we're done the motd will be blank most of the day. suggestion: grow up, you're not the smartest kid in your HS anymore. w3 awl g0t m4d sk1llz!1 |
2003/10/2-3 [Computer/SW/Languages/Perl] UID:10411 Activity:nil |
10/1 In Perl, what does "\%hash" mean? \_ delayed evaluation of $hash in some eval code probably \_ Perl Reference? http://www.uic.edu/depts/accc/seminars/perliii/references.html |
2003/9/27-28 [Computer/SW/Languages/Perl] UID:10352 Activity:nil |
9/26 in a perl script I'm trying to write a reg exp to replace a multiline block of text with another multiline block of text but can't seem to get it right. any advice? thanks. \_ example? \_ if he had an example he wouldn't need help, would he? \_ try subbing a variable for another variable, so you don't have to worry about how to escape newlines within s// expressions \_ i am trying to do the samething without much success. I am trying to remove a mult-line text block with certain pattern (for example "Do You Yahoo?..." Let me know if any of you have any cool idea on this supposely simple problem -kngharv \_ http://tinyurl.com/oya1 [removes ads from yahoo msgs] I ran this through s2p, did a little cleanup, and have been using it in my procmail script for about a year. \_ Two things to keep in mind: 1) You can't do this with a straight perl -pe 's/..../' from the command line (without -0777), so I'll assume you have the whole text to be substituted on in a scalar ($text or something). 2) Use /s at the end of your regexp: $text =~ s/.../.../gs; This will make things like . match \n as well, so that your matches won't fail at the end of a line. When in doubt, RTFM: perlre(1) --dbushong |
2003/9/20-21 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:10263 Activity:nil |
9/19 What's the easiest way to replace text strings in a binary file? I have a feeling that sed can't be used with binary files... \- uh you can try emacs. anymore is probably beyond the scope of wall. \_ perl -pi -e 's/foo/bar/g' is probably pretty safe; add in a -0777 first if you want to be paranoid \_ If you're replacing same-size strings, any hex editor will do. If you're shrinking them, then fill with spaces. If you're growing, you might break something if it's an executable or some self referenced data file like a zip. \_ spaces? Why not null chars? \_ because code accessing those strings may run into trouble with nulls/ \_ Arrr - nold for California Governor! \_ Avast Right-Wing Conspiracy! |
2003/9/17-18 [Computer/SW/Languages/Perl] UID:10231 Activity:nil |
9/16 I have a perl script that forks off children who do some IO-bound work and then print a result to stdout. Each child locks the STDOUT filehandle like this flock(STDOUT, LOCK_EX); &dump_results(); flock(STDOUT, LOCK_UN); but I still get child A's output mixed in with child B's. What am I doing wrong? \_ I recall something in the perl book (I have 1st ed) about switching between filehandles for output. They give some example code. Sorry I can't be more helpful. \_ thanks, I put in some "|| die" messages and I got "Operation not permitted." I switched to using an actual file and that seems to work. |
2003/9/9 [Computer/SW/Languages/Perl] UID:10121 Activity:high |
9/8 Any recommendations for a text-based Yahoo instant messanger app for linux that logs. \_ Yahoo::Messenger \_ what do you mean, there isn't a CPAN module by that name. \_ Sorry, Net::YahooMessenger, but really, you could have tried searching. \_ I did search for "Yahoo" at the CPAN list: http://www.cpan.org/modules/00modlist.long.html Why isn't that module listed there? BTW, I'm looking for an application, not a library. \_ Luke! Use the source! *WRITE* an application! You have the power within you! Feel it! Reach out to it! Close your eyes, unload the IDE, and just *feel* the code! |
2003/9/6 [Computer/SW/Languages/Perl] UID:29522 Activity:high |
9/5 Is there a way to get perl to auto-escape all characters of a filename? \_ "\Q..\E" http://www.perldoc.com/perl5.8.0/pod/perlre.html Something that could be used in foreach $file ( <*.txt> ) { $escapedFile = superEscapeFunction($file); ... system("cp $escapedFile ../$escapedFile"); ... etc. } Thanks |
2003/8/29-2004/2/14 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:12252 Activity:nil |
2/13 Does perl have a "diff" facility? I have something that requires a lot of diff but file I/O using unix diff would be too slow. Thanks. \_ Text::Diff? Really. You could search cpan for this sort of thing. |
2003/8/26-30 [Computer/SW/Languages/Perl] UID:10018 Activity:nil |
8/26 Java, perl, MySQL experience? 20 hr/wk contract available. email me if you're interested -brain |
2003/8/13-14 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:29338 Activity:kinda low |
8/13 In tcsh, how do you get * to include subdirectories? I want to do something like perl -p -i -e 's/foo/bar/g' **.c and have the command executed on ./*.c, */*.c, */*/*.c and so on. \_ You can do something like: find . -name '*.c' | xargs perl -p -i -e 's/foo/bar/g' might have to play around with that, I haven't tried it -niloc \- you cannot do zsh-style ** recusive globbing in tcsh. rather than doing something really ugly use find | xargs. there are also various emacs-heavy ways to do this. --mr emacs&&tcsh do this. --mr emacsbitch |
2003/8/6-7 [Computer/SW/Languages/Perl] UID:29249 Activity:very high |
8/5 help, there are commas INSIDE the fields of my Comma Separated File E.g. column 136, is "lastname, firstname". Now, being so damn clever, i figured that hey, i'll just make the field separator \",\" but that doesn't work 'cause the number fields aren't quotated. What should i do? -phuqm \_ ~scotsman/bin/csv.pl But you could just go through and add quotes around the currently nonquoted fields. I've seen some stupid csv handling in any number of products. Basic csv is: 1) comma separated 2) if field contains a comma, surround with "'s 3) if field surrounded by "'s contains "'s, escape the "'s as "". Many people can't get this through their skulls. --scotsman \_ clever? use tabs as delimiter \_ I didn't generate the file. -phuqm \_ self-depricating sarcasm is a sign of maturity. insults are not. \_ Find which lines have excessive # of commas and massage those data lines differently? Or if ALL lines are "lastname,firstname" then just treat it as an additional command-separated field. Or convert the data so that the where quotes and commas occur, convert them to 3 commas or some OTHER field-separator like # or % or something not used anywhere in your datafile It's very simple, so maybe i do not understand what ur asking. \_ Oh the sanity and simplicity of it all! Can't you make it more complex to show your superiority? \_ this is a standard CSV format. the comma is a delimiter but the "x,y" is _also_ counted as a single item. oddly enough, CSV files have 2 delimiters and you need to program for both the simple case and the "matching double quoted" case. \- use (f)lex --psb \_ use perl. type perl csv in google. \_ sigh... this was covered in one of my cs60c projects. now they just type keywords into google and copy the results. |
2003/7/23-24 [Computer/SW/Languages/Perl] UID:29108 Activity:high |
7/22 Please rate the following languages by their usefulness for large programming projects and give your reasons: perl, python, ruby, tcl, urdu \_ Bangla >> Urdu \_ ocaml! -- ilyas \_ Don't use tcl. tk was a cool idea but tcl is just cumbersome to use. Perl and python depend on your own thoughts about what a project needs. I personally would go with python but there are strong opinions on either side. Never heard of ruby, so can't help you there. \_ and after looking at some ruby docs I have got to say it at least looks worth learning. \_ Tcl blows. \_ don't use tcl. ruby = 1/2 python, 1/2 perl without perl's huge pre-made library at cpan. perl vs python? ask a priest. \_ Perl: Extremely powerful and extremely ugly. People have done amazing things with it, but I find it aesthetically unpalatable and do not use it. Tcl: An excellent language to use to control your c programs and allow users to write scripts. Tcl's main advantages are that the language structure is pretty simple and compact making it easy to embed into c programs. I've used TinyTcl to control/test programs written for a DSP. Tcl's main disadvantage is that the core language is too simple and compact; you have to add on lots of extra packages to get classes and other useful libraries. Python: A good language with lots of features like lambdas, classes, and plenty of libraries built in. It's not quite as easy to embed into c programs as tcl, but not bad. Python is my first choice mainly because of the many high quality built-in and third party libraries. The language itself is also a nice compromise between the simplicity of Tcl and the power of Perl while still remaining quite readable. -emin \_ To add to the above comments, Python has reached the community critical mass any project like it needs to become useful. wxPython is a joy to work in as well. |
2003/7/19-20 [Computer/SW/Languages/Perl] UID:29080 Activity:nil 53%like:28810 |
7/18 hey mikeh - nice your freaking perl jobs already! \_ stfu malcolm. you're the one running mutella. |
2003/7/16 [Computer/SW/Languages/Perl, Computer/SW/Languages/Web] UID:29051 Activity:high |
7/15 What's the best language for web scripting these days? Perl? PHP? Python? Something else? \_ PHP is really fast. \_ php is a pos if you need to do anything real. Perl or jsp/jsf is the way to go. \_ starting a new perl process for each web page being served up will be much slower than php. I'm curious if anybody has opinions on mod_perl. \_ My understanding is that with mod_perl, perl outperforms php--without it, it loses. But I haven't run any comparisons myself. \_ I've coded in both and supported lots of coders in all. PHP has the quickest dev. times, is easiest to do almost anything and has had the least problems. (really none). It's just my experience, but i've been on two bigish php projects with no problems and have never dealt with a java or mod-perl project where there wasn't some weirdness that had to be worked through. \_ i guess cold fusion is completely dead \_ do we have a LAMP set up on soda? \_ 'best' for what? fastest? more secure? best supported? best dev environment? it's like asking if one OS is 'better' than another. is this a somewhat subtle attempt to start a flame war? you need something less subtle to get a good flame fest going. |
2003/7/10-11 [Computer/SW/Languages/Perl] UID:28994 Activity:nil |
7/9 Perl question: s#<(/?[A-Z]+)>#<lc(\1)>#ge I'm trying to lowercase my HTML tags. that would work if I could get perl to execute my lc... the e flag doesn't work because I don't want to evaluate the "<>" in the second half of my regex. However, it does work when I do something stupid like: s#<(/?[A-Z]+)>#$f="<";$f.=lc($1);$f.=">"#ge \_ I believe s/<(\/?[A-Z]+)>/<\L$1\E>/g would work. -niloc \_ Thanks, I adjusted it to: s#<(.*)?>#<\L$1\E>#g to work for things like <A HREF="yomama"> |
2003/7/7-8 [Computer/SW/Languages/Perl] UID:28950 Activity:nil |
7/7 I want to use perl for some inplace substitution a la perl -p -i.bak -e 's/pattern/replacement/g' but I want to know if my pattern will be matched correctly. I've tried perl -pe 'print if /pattern/' * but that just prints all the lines. What's the right way to do this? \_ -p implicitly prints the line. Try -n instead. \_ thanks, is there a perl manual section that describes CLI opts? \_ from "man perl" perlrun Perl execution and options so... "man perlrun" \_ argggg.... thanks. |
2003/7/3 [Computer/SW/Languages/Perl] UID:28920 Activity:nil |
7/3 Cygwin on NT4 question: is there any way to make the following work? % ls -l s -rwxrwxrwx 1 joeuser mkpasswd 7512 Jul 3 15:36 s* % perl -p -i -e 's/define/FOOO/g' s Can't do inplace edit on s: Permission denied. % ls -l s ls: s: No such file or directory So perl says it can't write to the file, but it can, and then it deletes it. This happens on every file I've tried. TIA. \_ http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=3DA606DD.EEA0B29C%40acm.org |
2003/7/3-5 [Computer/SW/Languages/Perl] UID:28917 Activity:moderate |
7/3 Stupid Regex question. I am trying to print if the line contains $word: print if /[^a-zA-Z]?$word[^a-zA-Z]/;' this won't work if the word is the last word on the line. i can't see a nice way to do that... what am i trying to accomplish? trying to teach someone regexp and show them how things can be more complicated than they seem and that print if /$word/ is not sufficient. \_ print if /\b${word}\b/ \_ ahhhhhhhhh. nice. \_ The braces aren't necessary. -geordan \_ but a semicolon is while we're being pedantic \_ I figured that he was smart enough to figure out the semicolon. I couldn't remember if the {} were necessary so I put them in. I hoped he'd read the docs to find out what \b was and all the other goodness there. Why didn't you answer the original question instead of nitpicking my response? \_ 1) because I didn't care to, and 2) he really could've (and should've) looked in the perl book for 2 minutes and it would've been obvious. |
2003/7/3 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:28909 Activity:nil |
7/02 anyone have any idea why NET:FTP would take 60 times longer to grab a file than just going throught ftp on the (linux) command line. (but only on one box, my other box goes to the same destination fine, similar perl/cmd_line ftp times). \_ DNS? totally a guess |
2003/7/1 [Computer/SW/Languages/Perl] UID:28875 Activity:nil |
6/30 Perl Q: How do I "rewind" when iterating through a file? I want to do something like while (<FILE>) { if ($_ =~ /pattern1/) { search backwards/upwards for pattern2 } } What's the best way to do this? I've tried decrementing $. but that doesn't seem to work quite right. \_ This is probably a "there's a better way to do this, grasshopper" thing. Search for pattern2 first, then throw it away if pattern1 doesn't exist. Perl likes to move forward through files. The suggestion below also applies. \_ If the file is small, you can do something like... @file = <FILE>; foreach (@file) { if (/pattern1/) { @file2 = @file; foreach $inner (@file2) { ... /pattern2/ ... } } } Or do a last and restart a search for pattern2. i don't know what exactly you are trying to do. alternatively, you can open up a second file handle on the same file... |
2003/6/26 [Computer/SW/Languages/Perl, Computer/SW/OS/FreeBSD] UID:28843 Activity:very high |
6/25 Oh man, open office completely blows. It is way worse than any M$ product. It won't let me open my tab seperated file into calc. It assumes it is a word document and opens it thusly. I can't even cut and paste into calc. Surely there must be a solution other than having to substitute commas for my tabs in all my files. Please help. \_ perl -p -i .bak -e 's/\t/,/g' * \_ err... how about Word Perfect series? \_ It is pretty bad. Check out Crossover office from Codeweavers-- it's pretty nice (no FreeBSD yet tho.) -John \_ Ah yes. Program A doesn't have a feature I like. So A sucks. OOo has a number of features I like that are supierior to MS. YMMV \_ No. OpenOffice and StarOffice both have some very very annoying tendencies, such as munging formatting of a lot of different doc types. Like it or not, a lot (most) business documentation is done either in .pdf or .doc, even though a lot of us would prefer more people use ascii or html. And of all the office-type apps out there, MSOffice is currently the least worst. StarOffice/Openoffice/ koffice are a good start, but they have a long way to go before people will start accepting them and tolerating all the annoyances of using them. -John |
2003/6/23-24 [Computer/SW/Languages/Perl] UID:28812 Activity:high |
6/23 perl open3 question: according to the manpage, both of these should work. The first one does. Why does the second one produce an error message? "open3: wtr should not be null at ./open3.cgi line 20" open3(\*WTRFH, \*RDRFH, \*ERRFH, $command); open3($wtr, $rdr, $err, $command); \_ How did you assign $wtr? \_ Do I need to assign a value to them? the example just shows declaring them: my ($wtr, $rdr, $err); \_ don't breed. \_ ill assume for a moment youre not a new form of troll: yes, you need to put something in a variable before passing it as a parameter to a function or subroutine of some sort. not just in perl but in _most_ languages. you scheme/lisp freaks and other assorted nuts should count down slowly from 10 before replying. \_ Okay, assigning some random value works, but not in "use strict" mode. I'm not trolling. I'm serious. 'Can't use string ("one") as a symbol ref while "strict refs" in use at ./bin/open3.cgi line 27.' \_ Not true, but I'll assume that you're just uninformed. Ever heard of autovivification? Try this on a system that has a resonably recent perl installed: perl -e 'open $foo,"</etc/passwd" or die "It didnt work!";print <$foo>' (by the way this won't work on soda since the version of perl on soda is fairly out of date) (by the way this won't work on soda since perl5.00503 installed on soda is fairly out of date and doesn't support this feature). \_ Thank you. The machine I'm using open3 on is also an older version of perl. Is there a way to use $variable filehandles, or do I need to stick with the glob notation? \_ See the notes about IO::File in the "open" section of the perlfunc man page. In summary, it's still fairly simple, e.g.: use IO::File; my $handle = new IO::File; open $handle ... blah blah \_ It's a hack. "Install latest version of perl to avoid sloppy coding" isn't a real answer. \_ autovivification is not a hack. It's a widely used and supported feature. Take a look at the third edition of the Camel book and numerous articles on the net. |
2003/6/21 [Computer/SW/Languages/Perl] UID:28795 Activity:kinda low |
6/20 The great soda motd is unable to provide a solution or even a decent lead to perl scripting a robot... \_ Helpful responses deleted. You're an ass. \_ 1) It's not our job to spoon feed you anything, 2) you were given the right places to go to find what you needed, 3) the other poster is right. You're an ass. |
2003/6/20 [Computer/SW/WWW/Browsers, Computer/SW/Languages/Perl] UID:28777 Activity:very high |
6/19 I want to write a script (or find any workable method) of viewing and saving multiple sequential pages on a website. I can do this in perl easily (just extracting data from source) except for cookies. I generated frames to let a browser handle the cookie transaction but mozilla won't let me save frame source (!?!). Seems like this should be easy. Any advice? -jnat \_ have you tried 'wget' or 'curl'? \_ wget doesn't seem to work with http://picturetrail.com \_ I've thought of doing this too. Is there a good way to emulate a web browser so you don't get in trouble for screen scraping? \_ must...supress...urge...to...make...vector...calculus...joke \_ curl is what you want. \_ must...suppress...urge...to...make...vector...calculus...joke \_ for those who are less geeky, there is getleft. \_ What do you mean by "multiple sequential pages"? You can do cookies and all other browser emulation in perl. I'm not sure what you're trying to do. Me and many others have written web \_ "I" \_ Nyet, grasshoppa! In this case "Me and many others" is a single plural term. This is not what you were taught but did not learn in 3rd grade about "me and jonny were spanked for being bad" vs "I and jonny". In the future I'll confine myself to the simpler forms of English for you so as not to confuse the masses. \_ if you want to be truly pedantic, it's "Johnny and I." spidering programs to crawl and rape other people's sites. It's a reasonably well solved problem. \_ Okay where do I find out how to do this? I've been doing google searches and reading pages and pages and not seeing anything client-side. \_ http://cpan.org. You'll find all the modules for making http connections, saving and sending cookies, etc. |
2003/6/2-3 [Computer/SW/Languages/Perl] UID:28609 Activity:high |
6/1 I'm perl debugging under emacs. Everytime my script tries to open "/tmp/foo*" perl complains that it can't find it. But if I run it outside of emacs, it works. What gives?? \_ I suspect that you're trying to access one specific file named /tmp/foo*, but perl is interpreting the * some sort of glob. Email me the code where you call open and I'll see if I can figure out what's going on -darin. \_ open XX, "zcat -f --stdout ${YY} |"; where YY is "/tmp/foo*" and is meant to be multiple files perl correctly interprets it as a glob when executed outside of emacs. But under emacs, it complains of file not found. |
2003/5/28 [Computer/SW/Languages/Perl] UID:28569 Activity:nil |
5/27 In Perl, how would I print a number with leading zeros if it's less than a certain number of digits (eg. I want 3 digits, so '2' = '002') I can do it an ugly way (have a bunch of 'if length' statements), but I'm wondering if there's a more elegant way. \_ printf "03%d",$variable; \_ always giving it away.... how will they ever learn? |
2003/5/17-19 [Computer/SW/Languages/Perl, Computer/SW/SpamAssassin] UID:28467 Activity:nil 54%like:27696 |
5/17 What am I doing wrong? spamassassin -r < missed-spam-message razor2 report failed: No such file or directory Razor2 report requires authentication at /usr/local/lib/perl5/site_perl/5.005/Mail/SpamAssas sin/Reporter.pm line 99. Did it get to the Bayesian learner or not? \_ I don't know if "-r" sends the message through the Bayesian learner (I'll have to check the docs). However, you can send the message directly with "sa-learn --spam --file missed-spam-msg" \_ Yes it does, apparently even with the error above. But sa-learn skips reporting to spam archives. Thanks! -op |
2003/5/17 [Computer/SW/Languages/Perl] UID:28465 Activity:nil |
5/16 Who cares about perl, women with mustaches and politics, the real question is how the hell did Neo pull off that crap at the end of the Matrix Reloaded?!?! (BTW, did you notice Trinity used nmap and ssh? She's pretty '1337.) |
2003/5/17-18 [Computer/SW/Languages/Perl] UID:28464 Activity:low |
5/16 Newbie perl question. Does perl on csua have libraries to grab & parse HTML files off of remote servers? \_ It's been a while but it's called libwww or something like that. \_ perldoc LWP |
2003/5/15 [Computer/SW/Languages/Perl] UID:28448 Activity:high |
5/15 Perl regular expression question: I have a list of strings that I want to remove from a file. I tried to use s/$string//g for each string, but had problems when the $string contained special characters like (, /, etc. Is there a way to quote the $string so it will work? I tried qr, but that didn't do the trick. \_ s/\Q$string\E//g |
2003/5/9-10 [Computer/SW/Languages/Perl, Computer/SW/Languages/Web] UID:28387 Activity:kinda low |
5/8 is there a perl equiv of the php "escapeshellarg()" function? \_ Tell us what escapeshellarg actually does (I can guess but...). I know perl but not php. I'm sure I'm not the only one. \_ I'm trying to untaint a var that i will pass to a shell cmd. I think $ARGV[0] =~ s(')('\\'')g should do it, but <shrug>. \_ You may want to look at quotemeta, but this sounds like an ugly hack. \_ open(FOO,"\Q$tainted\E |"); |
2003/5/6-7 [Computer/SW/Languages/Perl] UID:28349 Activity:high |
5/6 How do I use sed to truncate output lines to say 60char/columns? \- helo "man cut" ok tnx. --psb \_ command | cut -c1-60 \_ will truncate, yes, but not useful for wrapping the text. \_ Was text-wrapping requested? No. \_ Um.. if you wanted line wrapping, use fmt. \_ perl is the answer to all text modifying or extraction questions. \_ Ok fine. How do I do this in perl? \_ command | perl -n -e 'print substr $_,0,60,"\n";' though I suspect this would be trivial with sed.--scotsman \_ command | perl -pe 's/^(.{1,60}).*$/\1/;' \_ Try "fold". \_ Try "fmt". \_ Try ED! and counting out to the 60th character on each line and deleting everything after it. Save the file out to a different file name if you need the original. |
2003/4/24-25 [Computer/SW/Unix, Computer/SW/Languages/Perl] UID:28219 Activity:high |
4/24 On systems without Perl, what's the easiest way to obtain the same results as perl -e 'print time()'? \_ On systems with perl the easiest way is: perl -e 'print $^T'; \_ 5 lines of C code using libc gettimeofday \_ combine date with awk and do some simple math (in awk or with bc). \_ combine date with awk and do some simple math (in awk or with bc). \_ 'date' has %s time format. \_ That gives you the "current second", not the # of seconds since epoch time. \_ date +%s gives the # secs since Jan 1, 1970 on FreeBSD and Linux. (It doesn't work at all on if you compile gnudate on solaris it will work--psb Solaris) \- this is a gnudate extension. if you compile gnudate on solaris it will work--psb \_ If he can compile stuff, then he can just write a 3 line c pgm to get the info he needs. |
2003/4/19-20 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:28170 Activity:high |
4/19 What's the closest thing Scheme has to a good standard library and a standard interpreter? \_ obUsePerl \_ Perl is a slow, broken mess. \_ there's a reason I like Scheme, and that reason is exactly why I can't stand Perl. \_ and that is? If you say consistency I will laugh. \_ a simple, elegant syntax. and then there are first-class procedures, first-class continuations, proper closures, hygienic macros, ... \_ i would rather read machine code than scheme \_ Oh please. The macros in CLisp and Scheme are a nightmare. \_ There is no better way to have general macros. \_ ok, what's a language with a better macro system? \_ I'll give you two: make, ant \_ make and ant do not have a macro system. \_ r5rs \_ R5RS is the language standard. It does not specify a standard library, and it's not an interpreter. \_ Is this for BH's project where the homeless guy gloms on to you until you get to campus and the campus police object beats him off? \_ /usr/ports/lang/scm |
2003/4/11 [Computer/SW/Languages/Perl] UID:28087 Activity:nil |
4/11 I need to delete a method from a bunch of classes. How do I do do a multiline match and delete in perl or sed or whatever? Something like 's/int.*::Foo\(\).*\{.*\}//m', but that doesn't work. \_ It's been a while since I've done this but I *believe* you need to futz with the paragraph marker variable. I'm sure some other perl guru who has done this more recently can provide a full answer. |
2003/3/21 [Computer/SW/Languages/Perl] UID:27777 Activity:moderate |
3/20 How do you get the error code of a system program in bash (or perl)? If I have in my_error.c int main (...) { exit (234); } how do I get that 234 in a variable? In bash, ec=my_error // sets $ec to the string "my_error" ec=`my_error` // sets $ec to the stdoutput of my_error and I get similar results in perl. What am I doing wrong? \_ $ ./my_error $ echo $? \_ In perl, assuming the "hello_world" program merely prints the text "hello, world!": $foo = `./hello_world`; ## $foo now has "hello, world!" $exit_val = ($? >> 8); ## $? contains the exit status as well ## as exciting flags in the low ## bits; perldoc perlvar for more. -geordan |
2003/3/14 [Computer/SW/Languages/Perl, Computer/SW/SpamAssassin] UID:27696 Activity:nil 54%like:28467 |
3/13 I got the following error: spamassassin -r < tmpSpam.txt razor2 report failed: Bad file descriptor Died at /usr/local/lib/perl5/site_perl/5.005/Mail/SpamAssassin/Reporter.pm line 77, <GEN1> line 1. What have I done wrong? \_ this is a FAQ. you need to create an id with razor-register \_ now i really feel stupid. I did created an ID though. I'll look at it again. thanks |
2003/3/12-13 [Computer/SW/Languages/Perl] UID:27671 Activity:low |
3/11 In unix what function/lib can I use to translate from a date to an integer value (given month/day/year, it returns a value), and vice versa? Thanks... \_ how about using a search engine? why wait several hours for an answer on the motd? i mean even "man -k time" would have given you the answer. you loser troll. \_ mktime and localtime, respectively. You might also have a look at strftime and strptime, which convert between the integer value and human-readable strings. \_ Could you clarify what you are using? Are you writing a C program? a perl script? An sh script? \_ You could probably do this using strptime and then futzing around with the tm ptr. \_ perl \_ If you don't care what the integers are, you could concatenate the year, month, and day into something like "20030312". Use positional string operators to create and extract. You'll have Y10K problems if you stick with a 4-digit year. It's not an int, but neither are the numbers used in mktime(), etc. |
2003/3/8-9 [Computer/SW/Languages/Perl] UID:27626 Activity:kinda low |
3/7 How can I get "perl -MCPAN -e 'install module'" to get via http or passive ftp? Regular ftp access doesn't go through my firewall. \_ perldoc CPAN discusses how to go through firewalls. \_ It's been a while but I believe the first time you try this it will ask you to config a bunch of stuff including the network. \_ That uses non-passive FTP, but this worked: perl -MCPAN -e '$ENV{FTP_PASSIVE} = 1; shell' from "perldoc CPAN" |
2003/3/4-5 [Computer/SW/Languages/Perl] UID:27599 Activity:moderate |
3/4 perl god, I want to match AAA but not AAAA, so I tried perl -ne 'print if /A{3}/' How come it still matches both AAA and AAAA? - perl tyro \_ /(?<!A)A{3}(?!A)/ \_ try /[^A]A{3}[^A]/ (edited) your syntax matches AAAA because AAA is within AAAA (ie, it could be AAA or AAAA or AAAAA or sdfAAAsdfa, and it'd match). This syntax says after the 3 A's, match any character that's NOT A. \_ you probably want something like /^(.*[^A])?A{3}([^A].*)?$/ (otherwise you won't match "AAAfgdsfg" or "dsgffdsAAA") -alexf \_ This won't match multiple AAA's on the same line, will it? (i'm still a grade schooler in regexp foo) \_ Yes, it will match the first set, so that's still a match. But it makes assumptions about lines and so forth. |
2003/2/27-28 [Computer/SW/Languages/Perl] UID:27558 Activity:high |
2/27 How do I remove blank lines and comment lines (starting with `#`) from a file? - unix newbie \_ sed/awk, perl, java, c, c++, etc \_ hi asshole! \_ BWAHAHAHA! You just made my day! \_ how do I use the "etc" command? I have this thing called "etc" on my computer but I can't run it. How to run etc? \_ grep -ve ^# -e "^[ ]*$" file > newfile (this will also remove lines with just whitespaces) \_ perl -ni -e 'print unless /^(#.*|\s*)$/' filename ...I think. And there's no real need to delete or overwrite my entry unnecessarily just because you don't like perl. Note that this will edit the file in place, as the question implies. -geordan \_ What's the perl manpage to see what various commandline args do? I use -p, but don't know what -n does. \_ perldoc perlrun -n is the same as -p, except it doesn't print $_ at the end of the loop. -geordan \_ Thanks for all the help! - op |
2003/2/15-16 [Computer/SW/Languages/Perl] UID:27420 Activity:moderate |
2/14 how do people do floating point arithmetic in /bin/sh? i make calls to bc, but i was wondering if there's a better way. \_ I use awk. \_ I use dc. \_ use perl! \_ too heavyweight \_ doing the whole thing in perl is probably more lightweight than doing it in sh and forking off everything you need to fork off to actually accomplish your task. \_ well, that naturally depends on how much floating point arithmetic or other non-native-to-sh stuff you need to do in the script... |
2003/1/27 [Computer/SW/Languages/Perl, Industry/Jobs] UID:27209 Activity:high |
1/26 I asked my two managers (why do I have two? for double the work!) \_ Go one manager up and get one of your managers fired. Sounds management-top-heavy: "too many chiefs, not enough (American) Indians." Managers are essentially overhead. to hire another sysadmin to help with the workload they are forcing on me. I asked for an SA with experience and who knows some Perl. Am I being unfair to expect an SA to know Perl? They are trying to get me to accept 3 internal candidates of which only one even knows bourne shell programming. I feel they are trying to dump someone on me which will only make my workload worse. They refuse to hire someone external. How do I convince my boss(es) of the validity of my concerns? I have one meeting with them tomorrow (Monday) before they decide. \_ I can't really help you with convincing pointy-hairs about anything, but I'd be surprised if any mid to high-level sysadmin didn't profess at least familiarity with perl. On the other hand, if they're a decent shell programmer it won't take long to pick it up. -tom \_ They will be paid $80K/year. Is that considered low or mid level nowadays? \_ In this climate, probably mid level. Can you make the economic case for it? Perversely enough, even pointy hairs with poor analytical skills tend to buy well reasoned arguments when it comes to money, provided you walk them through slowly. Something like this: a) You are overburdened. b) This is costing your company money. i. There are a fair number of studies that show employees are more productive when they are not scrambling to smash too many tasks into their day-- find one. In the worst case, you quit, and they incur the cost of hiring a replacement, which some HR wonks claim this runs as high as 25% of hiring salary (presumably your salary is greater than that of the new sysadmin they will hire/transfer) ii.There are other arguments you can make to support the idea that overworking you will cost your company money in the long run. Just make sure you don't end up threatening to quit unless you're willing to make good on it. And don't shoot yourself in the foot by somehow making it look like it's your fault that you are overburdened. c) Thus, you need a junior or co-sysadmin d) If the new sysadmin has any holes in his skill set, then it will obviously fall to you to train him. Training the new recruit adds to your overburdened status, and though it benefits the new guy, it takes away from time that both of you could be doing productive work that benefits the company at large. And on that note, I may be looking for a job, I know perl, and have references that can vouch for this. If you do end up looking outside your company, and you'd like to chat further, drop me an email. -dans \_ In this climate i'd say someone already there for the last year who is making 80K would be "mid-level". You can definiteley hire "senior level" sys admins in this market for 80K. You CERTAINLY should be able to get someone who knows at least some PERL. Also, if this was 1 year ago, i'd tell you that you should quit any place that doesn't let YOU as the only Unix admin, have a pretty damn big say in hiring another one. \_ For 80K they should write perl while juggling hot spares on the main file server and hand-crafting packets to get them through the shitty router... Call me. I'd love to do just a little perl on top of mid-level SA stuff for 80K. --scotsman \_ Starving people are always willing to do whatever while they're starving. You'll quit the moment the economy improves. Desperate people stink of it. \_ Um. 80K for midlevel SA is far from starving. hell, it's about average for a senior, non-manager admin. admin. --scotsman \_ Missing point: he's desperate to work for 80k now \_ ...and he's a sysadmin. enough said. \_ So he gets to manage liquidating capital equipment? but will quit the moment the economy turns around in the slightest. \_ when the mean goes up to, what, 81k? if i like the position, i stay. the job i have now was out of sheer desparation, and for a while it was hell, and i would've taken the first opportunity that came up. Over the last 3 months because of changes in management and raises, it's gotten much better and I'm happy to stay. Avg. salaries don't rise as quickly as you seem to think. Certainly not enough to risk my livelihood at "the moment the economy turns around in the slightest." --scotsman \_ You still reek of desperation. Sorry, but if it shows on the motd, you're not making it through an interview until you mellow. \_ i agree. he should call em up and say "let me hear you beg, bitch." \_ Dude, you work for a company that pays inflated salaries in a down market. Don't act so smug. \_ Missing point: he's desperate to work for 80k now but will quit the moment the economy turns around in the slightest. \_ I bet you were one of those bitches who bragged about the six digits they were making in the boom time. |
2003/1/26-27 [Computer/SW/Languages/Perl] UID:27204 Activity:high |
1/26 I asked my two managers (why do I have two? for double the work!) to hire another sysadmin to help with the workload they are forcing on me. I asked for an SA with experience and who knows some Perl. Am I being unfair to expect an SA to know Perl? They are trying to get me to accept 3 internal candidates of which only one even knows bourne shell programming. I feel they are trying to dump someone on me which will only make my workload worse. They refuse to hire someone external. How do I convince my boss(es) of the validity of my concerns? I have one meeting with them tomorrow (Monday) before they decide. \_ I can't really help you with convincing pointy-hairs about anything, but I'd be surprised if any mid to high-level sysadmin didn't profess at least familiarity with perl. On the other hand, if they're a decent shell programmer it won't take long to pick it up. -tom \_ They will be paid $80K/year. Is that considered low or mid level nowadays? \_ In this climate, probably mid level. Can you make the economic case for it? Perversely enough, even pointy hairs with poor analytical skills tend to buy well reasoned arguments when it comes to money, provided you walk them through slowly. Something like this: a) You are overburdened. b) This is costing your company money. i. There are a fair number of studies that show employees are more productive when they are not scrambling to smash too many tasks into their day-- find one. In the worst case, you quit, and they incur the cost of hiring a replacement, which some HR wonks claim this runs as high as 25% of hiring salary (presumably your salary is greater than that of the new sysadmin they will hire/transfer) ii.There are other arguments you can make to support the idea that overworking you will cost your company money in the long run. Just make sure you don't end up threatening to quit unless you're willing to make good on it. And don't shoot yourself in the foot by somehow making it look like it's your fault that you are overburdened. c) Thus, you need a junior or co-sysadmin d) If the new sysadmin has any holes in his skill set, then it will obviously fall to you to train him. Training the new recruit adds to your overburdened status, and though it benefits the new guy, it takes away from time that both of you could be doing productive work that benefits the company at large. And on that note, I may be looking for a job, I know perl, and have references that can vouch for this. If you do end up looking outside your company, and you'd like to chat further, drop me an email. -dans \_ In this climate i'd say someone already there for the last year who is making 80K would be "mid-level". You can definiteley hire "senior level" sys admins in this market for 80K. You CERTAINLY should be able to get someone who knows at least some PERL. Also, if this was 1 year ago, i'd tell you that you should quit any place that doesn't let YOU as the only Unix admin, have a pretty damn big say in hiring another one. \_ For 80K they should write perl while juggling hot spares on the main file server and hand-crafting packets to get them through the shitty router... Call me. I'd love to do just a little perl on top of mid-level SA stuff for 80K. --scotsman |
2003/1/22 [Computer/SW/Languages/Perl] UID:27185 Activity:nil |
1/21 Talk on "Managing Large Relational Databases With Perl" Free.. free food.. some free books.. Wed night in Mountain View http://www.mindsource.com/bofs/bof46.html questions to shac@csua.berkeley.edu |
2003/1/7-8 [Computer/SW/Languages/Perl] UID:27015 Activity:moderate |
1/7 Could the Great Gods of Soda Root install the perl RSS module? >perl -MXML::RSS -MLWP::Simple -e '' Can't locate XML/RSS.pm in @INC (@INC contains: /usr/libdata/perl/5.00503/mach /usr/libdata/perl/5.00503 /usr/local/lib/perl5/site_perl/5.005/i386-freebsd /usr/local/lib/perl5/site_perl/5.005 .). BEGIN failed--compilation aborted. thanks. - a fan \_ Mailing root is more effective. --scotsman \_ done. Installed. Thanks, scotsman and root. |
2002/12/29-30 [Computer/SW/Languages/Perl] UID:26935 Activity:insanely high |
12/29 I got a gift certificate for xmas. What is everyone's favorite book? \_ Profiles in Courage, something the shrub should read (if possible). \_ APUE, by WRS \_ http://csua.org/u/746 \_ the necronomicon \_ As I Lay Dying \_ Mein Kampf \_ "Thank You For Smoking" - danh \_ a danh xmas: link:csua.org/u/747 \_ O'Reilly's advanced perl book. \_ fucking nerd. \_ *laugh* \_ Perl sucks! \_ yeah dude i use .bat files for everything! rewlz! \_ The Holy Bible, KJ version. \_ Ten Things You Can't Say in America \_ Ian Banks' Culture books. Anything by Terry Pratchett. Anything by Tolkien. If you want 'serious lit,' try Master and Margarita by Bulgakov (recommended by every russian alive!). \_ "Envy" by Olesha -brain \- hello. how do you recommend somthing for someone too dumb to specify a genre or otherwise narrow the question a little. danhimal: is the C. BUCKLEY books a cheap thrill or is it actually good? i dont like PJOROURKE-typestuff. Can you read "The War on|against cliche" and report back if it holds up? is just awful in english [likw r. tagore is awful in 'DYING is certainly a fine book, but I suspect OP will throw an E_TOOSHORT on it. To RUSSIAN PARTY, if I had to read one PUSHKIN, which work would you recommend. Ok tnx. \_ I read every genre except "russian literature" and estrogen-specific books (romance novels, new age tripe, etc. none of which i would expect to be recommended - in earnest - on the motd) and if some soda geek told me that some romance novel REALLY was their "favorite" book (and I believed them) I might very well go buy/read it. As a general rule I will read any book which any male says is their "favorite" regardless of genre. This scheme rarely misfires and has led to my reading many good books that i might otherwise have missed. (The few times it has misfired were cases of books i was going to have to read anyway like _Fountainhead_, or recommendations by not overly bright females, which lead to the modification of the rule incorporated above. \_ would you rather read something recommended by a stupid male or a smart female? \_ Stupid troll. Russian lit isn't a genre. \_ Thank You For Smoking is good. Maybe you read his not so funny book on washington politics. its nothing like that. - danh \_ Reading Pushkin in English is kind of like reading Shakespeare in russian -- doesn't work too well. Onegin is his famous work. \- well i feel i got something out of reading dante/homer/ goethe/vergil in english ... although in some cases i could tell you were missign a lot. however i wasnt that blown away by moliere in english. are you saying it is just awful in english [like r. tagore is awful in english] or just non-optimal? i thought karamazov was stunning in english. but that may be more idea- heavy than language heavy. i didnt think much of the E. Onegin opera however. ok tnx. \_ For Moliere in English, there are very few decent translations. Every once in a while you get lucky. \- "get lucky"? this seems a dumb comment. Try Mamet and Stoppard for russian translations (I know they both did some Checkov. I don't know about verse) \_ Ugh. Reading Dostoyevsky is like eating bricks. In any language. Ugh. Heavy, heavy guy. Shakespeare doesn't flow right in russian. Russian is a 'suffix' \- your post doesnt "flow right" [sic] in english :-) language, English is a 'root' language, so stuff really doesn't translate right. But shrug, give Onegin a try. \_ with dostoyevsky it all depends on the trans- lation. Stay away from Constance Garnett in my opinion, and it will be a lot better. One of the best books I read this year was If On a Winters Night a Traveller by Calvino. -sax \_ you might want to try just skipping over all the spiritual and philosophical discussions. sure you will miss out a lot, but reading the soap opera bits of brothers karamazov wasnt sooo heavy. entertaining, even. \- uh so you are saying "just see the movie". \_ His density has nothing to do with subject matter, imho. He is just gray and depressing like a lead isotope. \_ russian jews -> soap and lampshades is a better idea \_ Gravity's Rainbow by Pynchon. \_ nice troll. subtle. succict. Most troll/char ratio. \- well strictly speaking much of it turned into a reasonable discussion not senseless bickering. LEMON -> LEMONADE and all that. --psb |
2002/12/21 [Computer/SW/Languages/Perl] UID:26881 Activity:nil |
12/20 Perl question: # Doesn't work my @list = (1, 2, 3); my $name = "list"; print("@$name\n"); # Works @list2 = (4, 5, 6); $name2 = "list2"; print("@$name2\n"); \_ Short answer: replace the second line with my $name = \@list; Long answer: using a string like "list" to access the variable @list is called a symbolic reference. It works, but there are some restrictions -- for example, if the variable @list gets garbage-collected, your reference won't work anymore; also, as you noticed, it only works with global variables. If you use \@list instead of "list", then you get a real (non- symbolic) reference, which you can use exactly the same way but doesn't have the problems above. See "man perlref" for details. --mconst \_ thx for the explanation. I'm not sure my $name =\@list is what I want, because I may want to pass "$name" as a command line argument to choose between different lists. Actually, someone may want to do that, not me. I was just helping. |
2002/12/19 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:26866 Activity:nil |
12/19 Newbie question - I'm not a CS or engineering or even a tech major so please don't jump all over this. What I'd like to do is replace all occurrences of a word in an original file with a word in an infile, ^^^^^^^^^^^^^^^^^^^^^^^??? and output a new file. I want to iterate this process for all the words in the infile list (the word to be replaced in the original file remains the same). Greatly appreciate any suggestion on which utility or script would be most suitable for this kind of job. \- emacs, sed, perl can all do this. i dont understand precisely what you are trying to do, however. --psb \_ ED is the standard text editor. \_Thanks for your guys help so far. What geordan summarized below is what I'm trying to do \_ I'm not on crack! Yay! ...Ohhhh -geordan \_ So the original file is basically a template which contains one or more words that needs to be replaced, and the infile contains a list of words that will be substituted into the template file? It's late and it's hard for me to word that. Anyway the output is a bunch of files, one for each word in the infile? I'd use perl. -geordan, who should just go to sleep \_ in bash: for i in `cat infile`; do cat ORIGINALFILE | \ perl -p -i -e 's/YOURWORD/$i/g' > \ ORIGINALFILE.$i; done [ reformatted - formatd ] \_ i thought grep was the standard quickest solution for this sort of thing but okay the above looks fine. or you can grep using the same regexp 's/YOURWORD/$i/g' ? i think \_ Uh you sure? I don't think this is doing quite what the OP was asking but I admit I'm not sure what the OP really wanted either. \_ I think it's along the lines of what he wants but I'm not sure if the $i in the perl regexp will be properly escaped. \_ Replace the single quotes with double quotes and it will be interpolated. Also the -i flag doesn't really make sense as you're not really modifying the file in-place. -geordan |
2002/12/13-14 [Computer/SW/Languages/Perl] UID:26807 Activity:nil |
12/12 is there any mysql+perl code on soda anywhere? \_ obGoogle \_ i dont want google, i want some "in production" soda code. i've already seen some google examples (non particularly useful). \_ just install bugzilla and look at that |
2002/12/9-10 [Computer/SW/Languages/Perl] UID:26768 Activity:nil 66%like:26124 |
12/9 how do i setuid in perl? \_ $> = newuid (this sets the effective uid; perldoc perlvar for more.) -geordan |
2002/12/9-10 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:26764 Activity:moderate |
12/9 help, i can't seem to figure out how to get the group info for a given user from c. In perl i'd just do @theuser=getpwnam USERNAME; $theuser[3] would be what i'm looking for. How do i do this in c? \_ man getpwent \_ getpwnam() |
2002/11/27 [Computer/SW/Languages/Perl, Computer/SW/Languages/Misc] UID:26644 Activity:nil |
11/26 With procmail, I'd like to pipe some email trough a perl script then pass it on to the appropriate mail folder. Is it possible to use procmail's function to write the email into the folder after the script processes it, or does the perl script have to do the final append to the the mail folder? \_ Yes, no. A rule like :0 fw: | scriptname will do this. The f means pass all mail that hasn't matched yet through that script as a filter. The w means pay attention to exit codes and if it fails, go on. man procmailrc for more info. --scotsman \- mailgent has a perl escape however you maybe be E_TOOSHORT to run mailagent. --psb \_ I want to do two things to any message that matches a pattern. I know how to either file it or pipe it into a program. I'm wondering if I can do both in one reciepe: pipe then file. Do I need to make two passes to do this? -op \_ I've seen some interesting things with re-entrant procmail, but your goal is probably simpler than that to accomplish. What is the goal? Give an example. \_ use a {} block. check ~mconst/.procmailrc for examples. --scotsman |
2002/11/15-16 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:26560 Activity:moderate |
11/15 What's the best way to print out a certain line number in a file? The best I could come up with is something like: head -(line # you want) filename | tail -1 \_ Actually, i think ED is the answer \_ close. \_ echo number|ed filename But it will print the number of bytes in the file when ed starts up. ED is the STANDARD! Text processor. -geordan \_ sed -n <line#>p < filename \_ thx! \- hola, i think sed is a better tool than pl in this case although a speed check would be interesting. more generally sed -n 'X,Yp' will print out the inclusive range from [X-Y]. On a big file this may be slightly better although perhaps not a real big deal on mondern machines: sed 'Xq;d' ... you do get more "sed intimidation points" for the latter as well. --psb \- i ran some tests on a sun blade 1000 lookin for a pretty deep line on a medium big file ... about 60million lines. here are the relative speeds: wc -l: 1 sed: 1.03 perl4: 1.59 perl5: 3.85 stragely some old intuition about sed doesnt seem to apply any more ... maybe it is because memory has grown so much compared to typical files. --psb \_ You *know* there's a 1 line perl answer to this.... \_ perl -ne 'print if $.==number' filename -geordan \_ ah! but where is the ocaml answer for this? |
2002/11/4-5 [Computer/SW/Languages/Perl] UID:26406 Activity:high |
11/4 Ok, I rtfm'd and stfw'd. How in perl do I swap 'foo' with 'bar' and 'bar' with 'foo'? I assume it has to be one s///g statement, but how? \_ let the "I can do this in .... notes" olympics begin! I'll start. I think you want: perl -pi -e `s/foo/bar` filename \_ I wonder if perl is a good candidate for upperbounding kolmogorov complexity of various text processing programs. \_ I think he wants to swap them. Not just simple replace. There's probably a more elegant way, but easiest is to use three replaces: s/foo/%%placeholder%%/g s/bar/foo/g s/%%placeholder%%/bar/g If it's a complex match, you'll probably want to do grouping, and will need some temp variables to save grouping matches across s/// statements, --scotsman \_ Ah ok. Thx. I was thinking there was some magical perl operator that would do this for me in one statement. \_ s/foo|bar/{foo=>'bar',bar=>'foo'}->{$&}/ge --dbushong \_ niloc's shortened solution: s/foo|bar/$& eq'foo'?'bar':'foo'/ge -geordan \_ Wow, look at all that wasted white space... :-) \_ Neat. Thx again. \_ slight tweak: s/foo|bar/$> c?bar:foo/ge -alexf \_ Works only on the "foo/bar" case, but I appreciate the sentiment. It also gives bareword warnings, I think. -geordan \_ Not in the raw perl -pe context on soda; it'll (naturally) start screaming bloody murder once it's using -w or something like that. A hack's a hack =) -alexf |
2002/10/21-22 [Computer/SW/Languages/Perl, Computer/SW/RevisionControl] UID:26264 Activity:high |
10/21 At work, i act as a tech support for a small company, I am thinking of dump all the manual, release notes, and all the problem i have encountered in the past into a sort of knowledge DB... I just want able to search things by keyword, nothing fancy. what kind of open source content management package should I use? there are too many of them at sourceforge. I would like to hear you guys' experiences -kngharv \_ just create HTML pages and let Google search them for you. \_ I went through this exercise recently for a client. There are NO good open-source KM products but the defintion of KM varies widely. Many people find Wiki and search engine acceptable. \_ How to use mysql and perl/cgi front end? How to get into Cal and knowing to write English goodly? \_ don't be an ass. he got two words wrong. How many languages can you write fluently? \_ thanks man. \_ just the one that counts in this country and unlike you I provided an answer. he didn't get two words wrong. he butchered the mother tongue. |
2002/10/21-22 [Computer/SW/Languages/Perl] UID:26263 Activity:very high |
10/20 What's a good data structure / pattern for a winamp-style "Jump-To" dialog? User types in a "foo bar", and the window returns existing files such as "Foomatic Hyperbaric", "Bare Food" etc. \_ I checked out XMMS, and it just uses an iterative approach: separate the words by whitespace, then foreach filename { f = lowercase (filename) foreach word { if (!strstr(f, word) return NO_MATCH } return MATCH } It turns out that processors are just fast. \_ I doubt there's any magic. I think most likely it just does a substring search on each filename. of course, if you want it to be interactive like winamp, you can progressively filter the results. \_ the poster wants to avoid iterating on each filename \_ obviously, but how do you expect to be able to filter on arbitrary strings without it? You're going to need to go through each filename. Or maybe you can index all the filenames by what letters they contain; the user types 'f', and the program returns a precalculated list of all items that contain the letter 'f'. \_ duh, perl. \_ a trie is good for searching strings with so-and-so prefix. don't know if that's so great for your examples though. \_ perl. \_ Perl is actually one of the slowest languages for regular expression matching. \_ And the fastest few would be...? \_ C, C++, ocaml. \_ wait-- would you really consider this a data-structure? \_ no, I don't answer the questions, I provide the solutions. most motd posters who ask detailed and specific technical questions are already in a thought rut and need a kick in the ass to get out and solve the real problem. \_ apparently you miss sarcasm as well. \_ if there was any I would've spotted it. since this is the motd, i expect people to post stupid things and mean them. \_ Thank you Comic Book Guy! \_ See what I mean? |
2002/10/17 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:26228 Activity:nil 72%like:26236 |
10.17 Primary language used: java: . c: .. c++: . perl: . other: |
2002/10/16 [Computer/SW/Languages/Perl] UID:26197 Activity:nil |
10/15 In perl5 how to do test if a variable is either blank ("") or just consists of whitespace? if $foo =~ // || / +/ ? \_ Whitespace usually consists of things like tabs as well as spaces, \s includes these. You could do something like $foo =~ /^\s*$/ |
2002/10/15-16 [Computer/SW/Languages/Perl] UID:26193 Activity:nil |
10/15 Alright, another perl question (I'm learning...) I have a 2D hash of refernces to hashes; is there some way to do the following in one line? my $ref = $myHash{"a"}{"1"}; my $dataVal = $$ref{$someIndex}; Thanks alot. \_ I think you want my $val = $myhash{a}{1}{$someIndex} assuming you have something like %myhash = ( 'a' => { '1' => { 'someIndex' => 'someValue' } } ); Basically any hash (or array) dereferences after the first assume that you're accessing a reference to an array or hash. This means that $foo->{bar}->[baz]->{garply} is equivalent to $foo->{bar}[baz]{garply}. Note that the first dereference requires the -> operator if $foo is a reference (in this case, to a hash). Confused yet? -geordan \_ Yeah I'm confused. Where the hell did you come up with garply? \_ 'garply' the word or 'garply' the key to an anonymous hash in an anonymous array in an anonymous hash in a hashref? (Heh.) -geordan \_ Actually, I think that makes sense. Thanks. I was trying this: my $val = $$myhash{a}{1}{$someIndex}; which is more like what I would do if it was a scalar with a reference... but I think I understand the distinction now. cool. - op |
2002/10/15-16 [Computer/SW/Languages/Perl] UID:26187 Activity:high |
10/15 Can you use the "correspond" operator (=>) in perl to initialize a a 2D hash? I'm getting some wierd errors. Thanks. \_ For major funky data structures and how to build and access them read ~scotsman/bin/SearchReport. Also, use Data::Dumper to see what you've actually created/accessed. \_ hm... I just want to do this, essentially: my %myHash = ( "a" => ( "1" => "foo", "2" => "bar" ), "b" => ( "1" => "baz", "2" => "shlep" ) ); \_ All your ()'s here should be {}'s. --scotsman \_ All your ()'s here should belong to {}'s. --scotsman \_ Actually, I got it to work by replacing all but the outer- most parens with {}. I'm still not clear on when Perl wants an even-length list, and when a map... but oh well... I guess the code works for now. Thanks alot. \_ You should really use {}'s. These designate specfically that these are HASHES. If you may eventually add a third dimension, this will trip you up again. Hashes are basically glorified arrays, which is why your first attempt was so confusing. Say what you mean and mean what you say. --scotsman \_ Almost right, except that the poster had %myHash instead of $myHash, so in this case ()'s would be correct for the outermost set. {} designates anonymous hashes and returns a scalar (a reference to an anonymous hash). -geordan \_ Make everything a global variable! |
2002/10/7 [Computer/SW/Languages/Perl] UID:26124 Activity:nil 66%like:26768 |
10/7 More perl q's: \_ sorry, this was a stupid mistake on my part. It does work as advertised. |
2002/10/7-8 [Computer/SW/Languages/Perl] UID:26119 Activity:high |
10/6 Perl question: I want to use something like @files = readdir(DIR); and get the a list of files, not just the first one in DIR. How do I tell readdir to give me the whole list, not just one? I rtfm'ed and it only said this behavior was possible. \_ perl works better if you don't treat it as C. @file = readdir($DIR); \_ perl morks better if you have a clue. readdir takes an open FILEHANDLE, not a var. \_ Believe it or not, with IO::Dir, it is possible to generate anonymous references to directory handles which you can then assign to regular variables. \_ why not just write a trivial function that does this (preferably using readdir)? Also, have you considered using perl's glob()? It could be what you need .. \_ opendir(DIR, $somedir) || die "can't opendir $somedir: $!"; while( $name = readdir(DIR)) { next if( $name eq "."); next if( $name eq ".."); push( @files, $name); } closedir (DIR); \_ or if what you really want is just the files in that directory: opendir DIR, $somedir; @files = grep {-f} readdir DIR; closedir DIR; -geordan \_ You are rad. \_ What is that grep {-f} doing? That was what I didn't get in the perlfunc example. \_ It's the function for grep to check for truth. in this case it's the "test" function, -f, which tests if the argument is a normal file. --scotsman \_ You could also use this to get just directories (-d), links (-l), sockets (-S)... see the perlfunc page for the rest of the flags. -geordan \_ or: @files = <$somedir/*>; \_ even more rad. \_ Note that this will return all entries that would be globbed by the shell for *, including directories, links, sockets, etc. Also I believe this actually forks off a shell process to run the glob, so it might be slower if you care. -geordan |
2002/10/2 [Computer/SW/Languages/Web, Computer/SW/Languages/Perl] UID:26073 Activity:high |
10/1 I am trying to modify an application with a pretty complicated post and i seem to be missing the variable names or the values that i got from just reading the source. Is there a way I can change the file it posts to to "myfile.[php||pl||sh||whatever" and have "myfile" just dump exactly what is being posted to it? \_ if you're using the CGI library in perl, you can dump out all post values the page is receiving easily, i think the syntax is something like print $query->dump; - danh \_ Undefined subroutine CGI::dump \_ and actually i just tried the below on a different machine and i got the same error, it works on soda though - danh \_ Was it a linux box? Mine is. But your are right it works fine on soda and i can just post to a .cgi here. - tnx. \_ #!/usr/bin/perl use strict; use CGI; my $query = new CGI; print $query->header(); print $query->dump; |
2002/9/13-14 [Computer/SW/Languages/Perl] UID:25875 Activity:nil |
9/13 Can someone install perl6 on soda? \_ Isn't it still beta? |
2002/9/12 [Computer/SW/Languages/Perl] UID:25856 Activity:very high |
9/11 Is there a way to get seconds from the epoch with a shell command on Solaris? Like date +%s? a. Solaris 2.6/7 /usr/bin/truss /usr/bin/date 2>&1 | /usr/bin/awk '/^time/ {print $NF}' b. Solaris 8 /usr/bin/perl -e 'printf "%d\n", time;' \_ perl -le "print time()" \_ damn you dave, beating me to it. no, wait, that can't be dave. he wouldn't have bothered with the ()'s. perl -le 'print time' --scotsman \_ perl -le 'print $^T' \_ is that mconst? \_ no. \_ install GNU date |
2002/8/25 [Politics/Domestic/911, Computer/SW/Languages/Perl] UID:25678 Activity:high |
8/25 http://web.lfw.org/jminc/Zilla/http://www.cnn.com \_ Ok so someone can figure out the one line of perl required to replace 99% of cnn's front page with "Zilla". So? \_ Do Not Question Ping. Ping Is Leeter Than Thou. -ping #1 fan \_ i dunno. it's funnier at 1 am on a friday. there was also something kind of deep about the absurdification of the bin laden news but I forgot what it was. \_ Malkovich malkovich? |
2002/8/16 [Computer/SW/Languages/Perl] UID:25579 Activity:very high |
8/15 My cousin wants to learn to program, but there's no CS classes at his highschool. I Any suggestions on what he should study? I told him to study PERL, because it would help him get a good job. \_Scheme. \_ Personally, I learned most things I know about computer science and programming by writing code. Perhaps a better way to motivate your cousin's education is to encourage him to code up some sort of project. The trick is to reign it in so he's not trying to do something that's likely out of his capacity ('I want to write a Quake clone!'). Once you know what he wants to accomplish, choice of language should be straightforward. \_ I agree. How about writing a game? Java? \_ I'd suggest Python. Very easy to learn, has good tools for free (especially wxPython), and has great online books. See http://www.greenteapress.com/thinkpython.html for example (though this book also comes for Java). \_ When I was a kid we didn't have CS at HS either, so I went to a junior college in the evenings. You might try that. There might also be summer CS camps, like at stanford or other univ. \_ that won't work. he's in juvy. \_ I learned programming by reading the manual of a Casio PB-100 which had a 11-character display and RAM space for 27 variables and 544 bytes of BASIC code. I wrote a simplified version of Pac Man on it. (That's in 1982 and I was 12.) So I think he should start with something very simple like the basic BASIC in the old days, not the fancy BASICs we have now. Once he doesn't lose interest, he can move up to one of today's languages. But then I don't know where you can find a simple BASIC these days. -- yuen |
2002/8/15-16 [Computer/SW/Languages/Perl] UID:25575 Activity:moderate |
8/15 I'm looking for details on an old ACM publication. It was something about "ah-ha!" programming. It was two small, slim books but had some great stuff in it about how to re-think coding problems and write smart/fast code. Anyone have any idea what I'm talking about? I'd like to buy a copy of both books but I don't know the name. Thanks! \- not programming perls and more programming pearls? \_ oh that sounds familiar. thanks! back to amazon again. \_ Yes. That was exactly it. Big thanks! \- oh yes PP and MPP are good books. is bentley still writing a column ? the csua does/used to own them. and that should be "ok tnx". i think CODE COMPLETE is an interesting book too. |
2002/8/15-16 [Computer/SW/Languages/Perl] UID:25570 Activity:kinda low |
8/15 To the sodan who warned me about Perl CGI...What weaknesses are there and how do I defend? Can you point me to a book/url/etc. for more information? \_ stfw http://www.google.com/search?q=perl+cgi+security \_ Sorry...assumed there was something specific. |
2002/8/14 [Computer/SW/Languages/Perl] UID:25555 Activity:high |
8/13 Do you respect Perl? Are you a sysadmin type or a software engineer type? \_ I had a theory: sysadmins love Perl. Software Engineers don't respect perl. Is this generally true? -op \_ depends, which one gets me a job? -jobless sysadm+programmer \_ your opinion is meaningless if you're not tall enough to be employed. \_ uhhhhhh? \_ do i respect a language that encourages crap to be written in an obfuscating manner, so that eventually i will have to debug some 13 yr old's attempt at stylistic prose using perl? No. I'd rather read/modify something sane like java, lisp, or python. \_ paolo is that you? \_ And you're what? 15? All languages can be written like crap. I've seen ancient line number oriented BASIC written beautifully. It isn't the language, it's the programmer. You can't deny the power perl provides or the huge support base available on the net. Your examples are ridiculous. I've seen plenty of crap written in java and lisp. Get out more (or would that be 'less' in this case?). \_ Wow,so the only code you'll ever have to read is the stuff you write yourself? I should be so lucky! Look, if you have a language that h1b's use, shouldn't it be a language that they can't shoot YOU in the foot with after they've left the country? You do not live in a vacuum, my republican friend. - I know you'd like to think so, but you don't. OTHER PEOPLE'S CODE AFFECTS YOUR LIFE. sometimes you have to debug it. Wouldn't you rather minimize that time? \_ Poorly written code is often poorly working code. If it's really worth using, it's worth parsing. If your project lead is allowing shitty code from an underling it's time for a talk. \_ Maybe you didn't get it the first time. I'll try again. Shorter this time: shitty code can be written in *any* language. And what's up with the republican line? Are \_ and if anything, i'd think perl were more left-wing... you trying to say something about Larry Wall? Is there something naturally republican about perl? I always thought languages were political party neutral. How does this change for non-American programmers? \_ and if anything, i'd think perl was more left-wing... \_ The biggest beef I have about Perl is the nasty OO syntax. I'm currently using it to develop some CGI apps and it rocks. Especially the large body of free libraries on CPAN, etc. \_ Careful with your perl CGIs. It's very easy to write a big exploitable hole. Trust *nothing*. \_ As opposed to other cgis? writing for web publication presupposes that you understand the security risk (or should. damn underqualified developers) |
2002/8/13 [Computer/SW/Languages/Perl] UID:25548 Activity:nil |
8/12 I am looking for Perl coding standard. Does such a thing exist? \_ yes. Grab a 2400 Baud modem. Run telix or minicom. connect to another modem. Now rip the phoneline out you see thost characters on the screen? That's the universal perl coding standard. \_ standards? If you want standards use python. \_ man perlstyle |
2002/8/10-11 [Computer/SW/Languages/Perl] UID:25534 Activity:nil |
8/9 Just curious, how many of you find perl on windows to be useful? I find myself writing lots of unix perl but never seem to write windows perl even though I keep my activestate up to date. \_ When i'm forced into a windows environment (like the last few months), it's nice to have something that i can still fall back on. i still use unix perl alot. i find a cygwin installation more comforting than just perl. |
2002/8/5-6 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:25500 Activity:moderate |
8/5 What is a good egrep regular expression for a IPv4 address? '^[0-9]*[.][0-9]*[.][0-9]*[.][0-9]*$' ?? \_ Really depends on how "good" you need it to be. You could do [0-9]{1,3} if you were worried about clutter. \_ ([0-9]{1,3}\.){3}[0-9]{1,3} BEAT THAT SUCKERS!!! \- in my experience there are some inconsistnecies in which egrep can do {} matchers ... at least between sunos4, solaris and gnu. --psb \_ ED! er uh no... PERL! PERL ON LINUX WHILE RIDING BIKE! YES! |
2002/7/11-12 [Computer/SW/Languages/Perl] UID:25331 Activity:moderate |
7/11 So, Linux doesn't allow suid shell scripts to work properly. However, i've got plenty of suid binaries and they evidently work. Will PERL suid programs work the way they should? Is there a good URL i can go to and have this all cleared up for me? \_ yes, suid perl scripts work fine. (They work only when setuid shell scripts are disabled in the kernel--for security reasons). -tom \_ suid shell scripts are disabled because it's really hard to block out every single way someone could exploit a shell script into doing something unintended, (changing LD_LIBRARY_PATH, IFS, PATH, SHELL, etc etc etc) |
2002/6/29-30 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:25243 Activity:high |
6/28 I have been repeatedly warned *not* to write shell scripts in csh/tcsh. Is there any validity to these warnings? If so, why? \_ Warned by? I write all my personal stuff in whatever the fuck I want (csh/tcsh/perl). I write anything for init.d in /bin/sh because /bin/sh should always work so the scripts are 100% guaranteed portable. (heh). /bin/sh pretty much sucks and has near-zero useful features but it's there. \_ Instead of posting your question to the motd try putting it to google. http://www.faqs.org/faqs/unix-faq/shell/csh-whynot is the classic article that explains why it's not a great idea. \_ For starters let's note this was written in 1996. A lot of the bugs he's picking on aren't out there anymore. A lot of the examples he's using are a bit contrived. I agree csh is not the best thing to write in if you're going to stick it in /etc/init.d or write a large script that does something important but for a quick hack, why not? It's there, you know it, use it and throw it out. Anything longer than 5 or 10 lines is probably a Perl job anyway. /bin/sh for /etc/init.d, tcsh for fun, Perl for real work. Just one man's world view. \_ When are you people going to move to Ruby? Perl sucks. \_ When Ruby has something that looks like CPAN so I don't have to reinvent the wheel everytime I want to do something interesting. I started Perl at 4.015. Lemme know when Ruby is as useful as Perl was 5+ years ago. \_ CPAN ugh. That is the worst thing to happen to perl with the possible exception of the stupid OO crap. Perl 4 was the last great perl, it had everything that was missing from Perl 3 without any of the messy non-sense of Perl 5 (about the only thing that Perl 5 add that is of any value is my). \_ CPAN is bad uh how? And Perl5 added real structures to the language making it much more useful. If all you wanted was sed/awk, use sed/awk. Some of us are too busy to reinvent the wheel or fucking around with the broken data structures in Perl4. \_ It was written in the 80s \_ Even more so then. The date inside the URL said 96. \_ It's just as relevant now. csh still can't do basic stuff like redirect STDOUT and STDERR to different places. It's a fine login shell, but it sucks for programming. -tom \_ Uhm, on that point in particular, you're wrong: (command >stdoutgoeshere) >&stderrgoeshere (admittedly, it can't, say, juxtapose the two, but that's not needed too often) -alexf \_ Why would anyone want to use (t)csh in a world where ksh and bash exist? Who uses ksh? _/ \_ Because bash is broken and stupid? \_ uh... % ( some-command > someplace ) >& other-place \_ I've never wanted to do the obscure shit he's talking about csh not supporting. That's what perl is for anyway. /bin/sh and perl covers everything. \_ if /bin/sh and perl covers everything, why are you programming in csh? And really, it's pathetic that csh can't handle trivial, obvious syntax like: "if ( "$foo" == "bar" )". You run into shit like that all the time with csh. -tom \- writing stuff in csh to me is like using vi for quick edits ... no matter how quick or trivial you think it will be, about half the time you get started doing something more involved and regret not starting out doing it right ... however if you want an objective list of drawbacks and gotchas in csh, that is a decent list. when it comes to tcsh there are some bugs, but everything has bugs ... those things in the famous doc are mostly design flaws. if csh works you you, do what you want. a very imporant piece of "code" at lbl consists of 3024 lines of csh ... it was supposed to be a 20 line program. "bill joy has a lot to answer for" --psb |
2002/6/18-19 [Computer/SW/Languages/Perl] UID:25141 Activity:low |
6/18 I'd like to do some perl programming on a contract basis. Anyone have suggestions on where to go to get hooked up? \_ http://jobs.perl.org --scotsman |
2002/5/15 [Computer/SW/Languages/Perl] UID:24838 Activity:very high |
5/15 How do you use find and xargs together (correctly) if your find doesn't support -print0? \_ perl! perl! perl is the STANDARD! ...find parser. \_ In Bourne shell you can try omething like this: find . -name '*.java' > .files cat .files | \ while read LINE ; do echo rm -f "'$FILE'" ; done Note this is much slower than xargs, but it is the only reliable way. It is also more reliable than -exec since not all find's understand quoting properly for -exec. Note that this is much slower than xargs, but it is the only reliable way. It is also more reliable than -exec since not all find's handle quoting properly for -exec. \_ find . -name '*.java' |xargs rm -f equivalent to: rm -f `find . -name '*.java'` \_ I know, but that doesn't really help me much. find . -name "*pl" | xargs file won't work if a pl file has a space in it. find . -name "*pl" -print0 | xargs -0 file works but I don't have the -print0 option on my Solaris box. \_ how about find . -name '*pl' |sed -e 's/\ /\\/g'|xargs ... \_ Other characters like ' would also ahve to be removed. \_ Install gnu find on your box. \_ No it is not. Command expansion (``) is limited by MAXARGS. If your `` expand to more than MAXARGS words, then command expansion will fail. xargs makes sure that it never invokes a command with more than MAXARGS arguments so it always works. |
2002/5/8 [Computer/SW/Database, Computer/SW/Languages/Perl] UID:24749 Activity:kinda low |
5/7 Contract position working with a Perl/MySQL installation at Sonoma State available. Mail tom if interested. \_ Will they blame me when MySQL peuks all over their data? |
2002/4/23 [Computer/SW/Languages/Perl] UID:24538 Activity:high |
4/23 Is there some fast way to find the number of files in a directory? I'm trying to do this in a dir with over over 10,000 files and "ls -l | wc -l" is taking forever. \_ ls | wc -l \_ ls -1 | wc -l \_ echo * | wc -w (assuming no spaces in filenames) \_ This won't work if there's a lot of file names. \_ obgetabettershell \_ Ok, what's your religion? Some of us work in real places and don't feel like installing tons of 'kewl' crap on do this that work everywhere with the l8st kewl sh3ll. every box. There's perfectly good standard unixy ways to do this that work everywhere without the l8st kewl sh3ll. \_ obPerl \_ perl -we 'use strict; my $d = shift @ARGV; if (defined $d && opendir(D,$d)) { my $n=0; foreach (readdir(D)) { $n++ if (-f "$d/$_"); } closedir(D) ; print "$n\n"; }' <dir> \_ Wouldn't it be nice to be able to access $. for directory reads? \_ yes You can make is shorter if you leave out -w, use strict, my and closedir. \_ find . -ls | wc -l RTFM on your version of 'find' for details. \_ find <dir> -type f -print | wc -l |
2002/4/17-18 [Computer/SW/Languages/Perl] UID:24461 Activity:kinda low |
4/16 What's the best way for my Perl program to get the TAI-UTC difference? That being the total number of leap seconds. \_ What's TAI? You can get your UTC offset with: use POSIX 'strftime'; $off = strftime('%z',localtime); which will give you a string like '-0700' Don't know of an easier way... --dbushong \_ Thanks, but that's not what I'm looking for. TAI : Temps Atomique International. (International Atomic Time) It's currently 32 seconds ahead of UTC. It counts continuous seconds. Leap seconds are added to UTC to keep UTC synchronized with earth's rotation. It's explained under "Leap Seconds" at http://hpiers.obspm.fr/eop-pc \_ $TIA = $UTA + 32; ;-) |
2002/4/5 [Computer/SW/Languages/Perl] UID:24331 Activity:nil |
4/4 Perl Quesiton: How do I print only the first 15 characters of a string? -perl-newbie \_ substr |
2002/4/4-6 [Computer/SW/Languages/Perl] UID:24329 Activity:nil |
4/5 Part time perl from home job. http://www.craigslist.org/sfo/sfc/sof/3398327.html Not for me but I figured some of you might be into it. |
2002/4/3-4 [Computer/SW/Languages/Perl] UID:24305 Activity:nil |
4/2 Looking for perl/script based virus. Where to find them? \_ Uh, you realize the difficulty a perl-based virus would have propagating, right? Why not write it yourself, it wouldn't be hard. \_ d00d, u should b l00king 4 a java virus. write once, run anywhere! \_ d00d, don't u know that there is no such ting as a java virus. java is 100% safe and secure, Scott McNealy told me so. \_ Why would you want such a thing anyway? And do you want a virus or a worm? There's a difference the so called 'tech' media can't figure out. |
2002/3/16-17 [Computer/SW/Languages/Perl, Computer/SW/Languages/Misc] UID:24131 Activity:high |
3/15 with I.E. I want view source to use my emacs binary. Anyone know how to modify my registry to do this? \_ you'll probably have better luck setting emacs as the default HTML editor and use File > Edit instead of View Source \_ Yah I got that working, but not being able to change the default View Source program bothers me, and I'm sure it can be done. As a side note when loading a program via gnuclient emacs doesn't seem to be colorizing the document based on the correct mode (i.e. html-mode in this case). Is that because html-mode isn't being turned on for some reason? Is there any easy way to fix this? \_ http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/configuration/clientreg/clientregistrylayout.asp \_ this is kind of dumb. If you put "<path>\foo.exe" "%1" as the command, IE will complain that it can't find '"<path>\foo.exe" "%1"'. If you leave out the "%1", then IE will send pass the full path to the cached HTML file, unquoted (which causes problems if the path contains spaces, which it almost always will) "%1"'. If you leave out the "%1", then IE will send the full path to the cached HTML file, unquoted (which causes problems if the path contains spaces, which it almost always will) Oh, and since View Source gets files directly out of IE's cache, it won't have an extension, which breaks color-coding. Yay. I'll stick with File > Edit. \_ yah it is lame, but a quick search found a visual basic program to get around this problem. The lack of file extension sucks too but hey, it works. And this way I can view source for a frame and not have it pop up the totally useless notepad.exe \_ "Use the source!" -- oh wait, you cant. poor you. \_ Use Opera--you can select the viewer program. \_ Use perl! Ok to be honest I'm not sure how perl would really fit in to this but I'm sure active perl can be used here somewhere.... |
2002/3/14 [Computer/SW/Languages/Perl] UID:24111 Activity:moderate |
3/13 Does anybody know a command to display the current Julian Date? \_ man cal \_ the "Julian Calendar" is not the "Julian Date" cal shows the Julian Calendar. the Julian date for right now is about: 2452347.59 \- the power of emacs: (calendar-print-julian-date) Show the Julian calendar equivalent of the date under the cursor. \_ The Julian period (and the Julian day number) must not be confused with the Julian calendar. The Julian period starts on 1 January 4713 BC This is what I'm looking for. \- you can do this using "astronomical date" that is M-x calendar-print-astro-day or something like that in emacs Astronomical (Julian) day number (at noon UTC): 2452347.0 The emacs calenday can pretty much do anything, although in some cases you might have to write some el based but the primitives are all there. UTSL. ok tnx --psb \_ Thanks, but how about something simple I can run from the command line? By the way, how do I get the number of seconds since the UNIX Epoch? \_ perl -e 'print time . "\n"' \_ perl -e 'print "$^T\n"' \- (gnu)date +%s. i think there is a program called ctime too. if you need from shell there are various astro-calculation oriented libs you can use to convert between date fmts also support for sideral time periods and such. dunno if it excists for high level lang like perl but assume so. ok tnx --psb \_ Everything can be done in perl. If it can't be done in perl, you didn't really need it done anyway. \_ I'd like to see you write a device drive in perl. |
2002/3/2 [Computer/SW/Languages/Perl] UID:24015 Activity:nil |
3/2 Whoa, sorry about all those zombies. Stupid Perl script bug. Weird -- nobody who bitched on the MOTD actually thought to mail me... - bronson |
2002/2/14-15 [Computer/SW/Languages/Perl] UID:23864 Activity:high |
2/13 How I catch the user hitting control-c or control-d in perl? \_ Surveillance cameras. \_ system(qw(/path/to/stty raw)); --dbushong |
2002/2/4-5 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:23768 Activity:low |
2/3 i have the same directory twice in my PATH (the first and last entry). how can i remove the first entry? \_ set your path to null, then reset it. \- this is a pretty strightfwd shell programming exercise. the exact syntax depends on the shell. you can google for "uniqpath" although that may not work for you. ok tnx --psb \_ PATH=`echo $PATH|perl -lapF: -e'$_=join":",grep{!$p{$_}++}@F'` (also maintains the order) --dbushong |
2002/2/3-4 [Computer/SW/Languages/Perl] UID:23762 Activity:nil |
2/3 perl is ded. |
2002/1/25-26 [Computer/SW/Unix, Computer/SW/Languages/Perl] UID:23668 Activity:high |
1/24 Is there a way to do the substr function in a shell script? I want do command | foo 4 10 to get the 4th to 10th character of output. Thanks! \_ printf(1) might work \_ cut -c 4-10 if you want 4th through 10th of every line; otherwise you'll probably need some sed/perl hack since most UNIX utils treat lines as separate records. -alexf \_ Try awk '{print $x}' | cut -c 4-10 where x = your item in the line. If you need to do something with the rest of the line you can start playing with 'tee' and shit like that but perl is probably a better long term choice. \_ awk has a substr function. # substr($2,9,7) picks out characters 9 thru 15 of column 2 {print "imarith", substr($2,9,7) " - " $3, "out."substr($2,13,3)} --dim |
2002/1/17 [Computer/SW/Languages/Perl, Computer/SW/Languages/Misc] UID:23579 Activity:high |
1/16 I want to write a simple monitoring script for a webservice that I have running. I Was thinking of doing something like just telnet'ing to port 80, doing a GET, and grep'ing for a word to indicate that all is running smoothly. Is there a way to script such a telnet usage? If so, how? Is there a better way to do this? Thanks. \_ perl has various ways to contact web servers. See CPAN. -tom \_ go to http://kernel.org and look for 'mon'. don't rewrite code someone else has already done for you. there's no pretty gui for it though. \_ google for Netsaint and thoth. \- lynx -dump URL > /dev/null || mail warning --psb \_ curl -s URL | grep -q whatever \ || mail -s 'warning' person </dev/null --dbushong \_ Sure but the above methods will spam the crap out of you if you run them often enough to be useful (from cron maybe). Use a real monitoring tool. \_ wget \- not everyone needs a complicated tool. a little shell hack works for a lot of stuff. --psb |
2002/1/11-12 [Computer/SW/Languages/Perl] UID:23534 Activity:high |
1/11 What is the Right Way to check if a program is in the user's path from a perl script? I want to use ci and co in the path otherwise use /usr/local/bin/ci,co. I know klugy ways to do this but was wondering what the recommeneded way was. Thanks! \_ $ENV{PATH} .= ":/usr/local/bin"; \_ `which ci`[motd indent god was here] \_ which is horrible. use type as god and steve intended. \_ system("ci $flags || /usr/local/bin/ci $flags"); is the "kludgey" way (oh no, you're using the shell!) system('ci', @flags); system('/usr/local/bin/ci', @flags) if $? >> 8; is slightly more efficient \_ Just write yourself a type/which sub in perl: sub type { local($dir,@files,$file); return "" unless (defined $_[0] && $_[0] ne ""); foreach $dir (split(/:/,$ENV{'PATH'})) { opendir(DH,"$dir") || next; @files = grep(!/^\.\.?$/,readdir(DH)); closedir(DH); foreach $file (@files) { return "$dir/$file" if ($file eq $_[0] && -f "$dir/$file" && -x "$dir/$file"); } } return ""; } \_ are you sure there is no perl module that does this already? \_ http://www.cpan.org Go look and let us know. Thanks! \_ yeah, let me download yet another totally bizarre perl module from http://cpan.org that was written by a recently civilized shepard in outer mongolia on his linux box and then let me download the 86 other modules his module depends on rather than write a few lines of code. |
2002/1/9 [Computer/SW/Languages/Perl] UID:23500 Activity:nil |
1/8 Soda slow? PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 9706 celia 58 0 4808K 3188K RUN 20.9H 82.08% 82.08% perl |
2001/12/5 [Computer/SW/Editors/Emacs, Computer/SW/Languages/Perl] UID:23146 Activity:high |
12/5 I want to use Cascading Style Sheets to force the display of code between <code> directives to have eight spaces for every tab. I've searched the web, but haven't managed to find any useful links. Any help would be appreciated. --twohey \_ I don't think CSS will let you specify things like that. (w3c discourages using horizontal tabs in preformatted text. http://www.w3.org/TR/REC-html40/struct/text.html#h-9.3.4 ) Can't you just use emacs or some other tool to replace all the tabs with spaces automatically? (If the increased file size bothers you, install mod_gzip or something.) \_ I want to cut and paste code that's formatted with eight space tabs and have it display correctly. It seems absurd that I have to translate spaces to tabs for this to work. --twohey have to translate tabs to spaces for this to work. --twohey \_ it seems absurd that translating tabs to spaces is such a big deal. just tell emacs to save files with spaces instead of tabs. get over it. \_ perl. no emacs required. |
2001/11/27-28 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl, Computer/SW/Unix] UID:23113 Activity:nil |
11/26 How do I find file and symlink only that excludes a, b, and c? I tried: find . \( -type f -o -type l \) -name a -prune -o -name b -prune -name c -prune -o -print and failed miserably. \_ find . \( -type f -o -type l \) -print | egrep -v '^(a|b|c)$' \_ perl |
2001/10/23-24 [Computer/SW/Languages/Perl] UID:22802 Activity:kinda low |
10/22 I'm importing a bareword from a perl package (e.g. Math::avogadro) and can do things like print avogadro and print Math::avogadro just fine. But if I try to use avogadro in a hash, I get the string, not the value. \_ $hash{&avogadro} It's because it's not _really_ a constant. "variables" without $'s before them in perl are really subroutines. (Sometimes with some more efficient magic) \_ Thanks! BTW, where could I have found this information? (If I were smarter, I might have been able to intuit it) \_ Hmm. perlsyn(1), maybe? I mean, it's just kinda general knowledge that anything without anything on the front in perl is a subroutine. |
2001/10/19 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:22774 Activity:nil |
10/18 How difficult is it in emacs to write a mode to quickly add a type to a variable? I'd like to be able to enter a "typing-mode" and, eg, add "const" to the declaration of variables I shift-click on. \_ you have got to be kidding me \_ perl |
2001/9/20 [Computer/SW/Languages/Perl] UID:22559 Activity:nil |
9/20 For a long time i have been doing silly things like: "ls some | myfile.pl" (where myfile.pl starts with "while (<>)..." There must be a way to do this inside the perl script. Please supply clue. note: i tried "while (<system("/bin/ls -t1 some">)" \_ foreach $arg (@ARGV) { push(@dirs,$arg) if (-d $arg); } open(CMD,"/bin/ls -t1 @dirs|") || die "Error: $!\n"; while(<CMD>) { &doStuff() ; } close(CMD); if you are interested in reading the contents of a directory consider using opendir, readdir and closedir instead of ls. \_yeah but i already know all the flags to order ls the way i want. Anyway, i'm such a rookie i didn't even know you could turn a command into a filehandle, this is very cool, thanks. \_ what does the | in the open signify? --newbie \_ | -> pipe. open(CMD,"cmd|") does a popen() in read mode, while open(CMD,"|cmd") does a popen() in write mode. Note: you can't do open(CMD,"|cmd|"). If you need this take a look at open2(). If you use open2() your *must* save its return code which is the pid of the process that open2() runs on your behalf. You *must* call waitpid(pid,0) on this pid otherwise you will end up with defunct processes. |
2001/8/27 [Computer/SW/Languages/Perl] UID:22276 Activity:high |
8/27 What is an OS level command equivalent of perl's chomp and chom? \_ /* not tested */ void chomp(char *str) { int len; if (str == NULL || ((len = strlen(str)) <= 0)) return; if (str[len-1] == '\n') str[len-1] = '\0'; } void chop(char *str) { int len; if (str == NULL || ((len = strlen(str)) <= 0)) return; str[len-1] = '\0'; } |
2001/8/22-23 [Computer/SW/Languages/Perl] UID:22206 Activity:kinda low |
8/21 What is the emacs equivalent of % in vi? I've tried (require 'paren) in my .emacs but it doesn't seem to work. \_ You don't need all that shit. Use ED. No mode of ED's ever sucked. \_ like M-x find-matching-paren or something.. \_ why use emacs? \_ you're joking right? I didn't think people were actually debating this stupid issue anymore. \- it depends on the question ... a hostile "why should i a vi/pico/jove user use emacs?" is best answered "you use what \_ as compared to say vi's perl-mode? \_ Lack of a perl mode is better than a perl mode that fucks up your formatting. -tom \_ as compared to cperl-mode, which should be the default --pld. ever ratshit editor you want". a sincere "why would it be worth switching to the OTE" is a reasoanble question ... but the most interesting are more abstract ones like "should cs students today be taught emacs-only? emacs and vi? tex? \_ What about stuff like gnus, mh-e, M-x shell, M-x man, etc? \_ Why do you want to use your text editor to do that stuff anyways? there is always :! of course, if you can't just open another xterm. ms word?" ok tnx --psb \_ M-x compile, gdb, gnus, mh-e, cc-mode, java-mode, php-mode, shell-script-mode, perl-mode, make-mode, etc. \_ emacs perl-mode sucks. -tom \- look, i dont expect you to actually beatout gods-perl-mode but if you have some solid suggestions write them up and post the to gnu.emacs* or comp.emacs ... that is if you are capable of anything beyond this incessant braying and carping. --psb \_ And of course you send all your suggestions on how to improve vi to the vi developers. Idiot. All you need to see how bad emacs' perl mode is is a single << operator and some HTML. And that reminds me, emacs HTML mode sucks too. -tom \_ And your comparison is to say vi's Perl and HTML modes perhaps? \_ VIM has something similar to the M-x compile. Syntax highlighting and indenting support for most languages is there too. There is no integration with gdb however. By the way, where are you ED fans? I'd like to hear your opinions.. \_ either follow what the first poster suggested, or (better), look for flash-parens.el on the web. it is superior. also, you use emacs because is configurable and allows you to write scripts for it. vim doesn't let you do that. -ali \_ but Lisp is so slow and nasty, unlike asm... ok tnx -- psb #2 fan \_ You can customize vim using its (awkward yet useful) built-in language or, if that is not enough, you can compile vim with perl and/or tcl support. \_ you can also compile nvi (which is much more pleasant on first experience than vim) with perl and tcl support, but it doesn't have all of the (clanging) bells and (piercing) whistles.. it just, well, edits text \_ I wish it were able to, well, edit your (purple) text. |
2001/8/14-15 [Computer/SW/Languages/Perl] UID:22108 Activity:very high |
8/13 What are people's opinions on large projects written in perl? I have heard from a very reliable source that large (more than a couple of tens of thousands of lines) projects collapse under their own weight if written in perl. \_ Yeah, that's the common wisdom on the subject. \_ It's indeed "common wisdom", but not a definitively true statement. What kind of project do you have in mind? \_ I don't think perl's inherently limited to small projects, but its advantages are strongest there. For large projects, you can use strict, use the object-oriented stuff, compile if you have to. There's no particular reason why a large project wouldn't work, but support for large projects is kind of tacked on, and doesn't make for the kind of fast development that makes perl ideal for smaller projects. -tom \_ I'd (annoyingly) agree with tom, and I love perl. Keep in mind that "large project" is relative. If it's a giant website, with lots of pages, but each page has a limited amount of work to do, and you want shared components, there are definitely systems in place to make perl a good system for that. If it's one big monolithic app, forget it. \_ did you mean "annoyedly"? \_ well, if i agree with tom, than by definition i _am_ \_ well, if i agree with tom, then by definition i _am_ \_ did you mean "then"? being annoying... \_ I'm annoyed. |
2001/8/10-11 [Computer/SW/Languages/Perl, Computer/SW/Unix] UID:22070 Activity:very high |
8/10 Are there commonly used filename suffixes for sh scripts, csh scripts and tcsh scripts? (e.g. .pl is for Perl scripts; .c is for C files.) Thanks. \_ Use .sh for sh/bash scripts; never use *csh for any sort of \_ and ksh scripting purpose. It does funny things sometimes-- see Unix Power Tools. \_ In the words of Tom Christiansen: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot \_ My script is very simple and it only has several lines of commands. No variable substition, no conditional, etc. The only thing I need the shell to do is some filename expension of the form: cmd1 ~/foo/{`whoami`_*}/bar/{dir1,dir2,dir3} arg1 | \ cmd2 ~/baz/`date | cut -d' ' -f1`.txt arg2 I couldn't get this to work in my crontab file which I suppose uses sh syntax, so I ended up putting it in a csh script. I [ Reformatted - motd formatting daemon ] know very little about shell scripts anyway. [ Reformatted - motd formatting god ] \_ It only works in csh because of the ~. Some other shells will let you use ~, but you should be able to rewrite it in \_ But the {} part doesn't work either. How do I do sh using ${HOME} instead of ~. \_ But the {} part doesn't work in sh either. How do I do "bar/{dir1,dir2,dir3}" in sh so that it expands correctly? \_ for i in dir1 dir2 dir3 ; do <stuff> ; done \_ DIR="$HOME/foo/`whoami`_*/bar" FILE="$HOME/baz/`date | cut -d' ' -f1`.txt" for i in dir1 dir2 dir3 ; do cmd1 "$DIR/$i" arg1 | cmd2 "$FILE" arg2 ; done \_ But that means running the commands three times instead of running the commands once with the three paths as three arguments. \_ DIR="$HOME/foo/`whoami`_*/bar" FILE="$HOME/baz/`date | cut -d' ' -f1`.txt" for i in dir1 dir2 dir3 ; do MYDIR="$MYDIR $DIR/$i" ; done cmd1 $MYDIR arg1 | cmd "$FILE" arg2 \_ Actually, .pl is supposed to be for "perl library" files, or included snippets of scripts. Whole perl scripts are supposed to be .p, though I never bother putting an extension on them, as they're executable in their own right. \_ What's your source? Nothing on google that supports your statement, and .pl is absolutely standard usage (with .ph = perl header [mostly perl4 and down] and .pm = perl module [perl5 and up]). Furthermore there's a story floating around about Larry Wall taking the last 2 letters of "BCPL" to complete the sequence of BCPL descendants (.b, .c, .pl). \_ perlcc, for starters. \_ In actual usage, I always see .pl as perl executables, and never see .p \_ indeed. \_ I thought perl libraries and modules had the .pm extension \_ no, just modules |
2001/7/18 [Computer/SW/Languages/Perl] UID:21833 Activity:high |
7/17 "Perl is like chewing on chunks of broken glass, only without the tasty blood sauce to go with it." \_ Uh.. \_ Ok, I'll bite. How do other programming languages taste like? \_ C is like an IV drip. \_ Lisp is like a New York steak hand fed to you gram by gram by a large breasted supermodel. Fun and filling, but slow. \_ And then the model takes off her mask, and underneath it's . . . RICHARD FATEMAN!!!!! \_ Why, he does make me horny, baby! \_ That's one image I could have done without... |
11/27 |