Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^3: wrapping bash and astronomy

by kcott (Archbishop)
on Mar 02, 2023 at 11:00 UTC ( [id://11150697]=note: print w/replies, xml ) Need Help??


in reply to Re^2: wrapping bash and astronomy
in thread wrapping bash and astronomy

G'day Aldebaran,

" can't figure out why the shebang and comments endure: ... How is my regex not sieving out the comments?"

Your regex, /^#*$/, is anchored at the start (^) and end ($). Consider:

$ perl -E ' my $x = "#shebang\n\nstatement1\n#comment\nstatement2"; my @lines = split /\n/, $x; say "All lines:"; say for @lines; say "-" x 40; say "Your regex:"; say for grep ! /^#*$/, @lines; say "-" x 40; say "Better regex:"; say for grep ! /^#/, @lines; say "-" x 40; ' All lines: #shebang statement1 #comment statement2 ---------------------------------------- Your regex: #shebang statement1 #comment statement2 ---------------------------------------- Better regex: statement1 statement2 ----------------------------------------

Note how your regex is removing blank lines. Did you want that?

Addendum: If the answer to that last question is yes, you can use /^(?:#|$)/.

— Ken

Replies are listed 'Best First'.
Re^4: wrapping bash and astronomy
by Aldebaran (Curate) on Mar 08, 2023 at 06:34 UTC

    Thx, kcott,I can hardly believe this thing works, but it almost does:

    fritz@laptop:~/Documents/gitlab1$ ./1.wrap.pl 3.git.sh Time is Tue Mar 7 22:43:27 2023 Julian day is 2460011.73850694 ./1.wrap.pl line matched #!/bin/bash line matched #echo "starting fresh with rm -rf .git" line matched #rm -rf .git | tee 1.txt line matched #git init line matched #ls >README.md line matched #git remote add origin git@gitlab.com:perlmonks/$1.git line matched #git push -uf master main | tee 2.txt line matched pwd >2.txt git add *.pl git add *.sh git add *.txt git commit -m 'next revision' | tee 2.txt git push -uf origin master | tee 2.txt cardinality: 6 Enumerating objects: 13, done. Counting objects: 100% (13/13), done. Delta compression using up to 4 threads Compressing objects: 100% (12/12), done. Writing objects: 100% (12/12), 5.47 KiB | 224.00 KiB/s, done. Total 12 (delta 3), reused 0 (delta 0) remote: remote: To create a merge request for master, visit: remote: https://gitlab.com/perlmonks/betelgeuse/-/merge_requests/new +?merge_request%5Bsource_branch%5D=master remote: To gitlab.com:perlmonks/betelgeuse.git 092deaf..5000f52 master -> master capx: [master 5000f52] next revision 11 files changed, 963 insertions(+) create mode 100644 1.aldeb.txt create mode 100755 1.wrap.pl create mode 100755 2.2023.pl create mode 100755 2.create.bash create mode 100755 2.wrap.pl create mode 100755 3.2023.pl create mode 100755 3.millcreek.pl create mode 100644 3.output.txt create mode 100644 3.wrap.pl create mode 100755 4.2023.pl create mode 100755 4.wrap.pl Branch 'master' set up to track remote branch 'master' from 'origin'. fritz@laptop:~/Documents/gitlab1$

    Source:

    #!/usr/bin/perl use v5.030; # strictness implied use warnings; use Path::Tiny; use Time::Piece; use Log::Log4perl; use IPC::System::Simple qw/systemx capturex/; use utf8; my ($argv1) = @ARGV; if (not defined $argv1) { die "Need argv1\n"; } my $t = localtime; my $jd = $t->julian_day; my $log_conf4 = '/home/fritz/Documents/perlmonks/conf_files/4.conf'; Log::Log4perl::init($log_conf4); #info my $logger = Log::Log4perl->get_logger(); $logger->info("Time is $t"); $logger->info("Julian day is $jd"); $logger->info("$0"); my ($path) = @ARGV; if (not defined $path) { die "Need path in\n"; } my $file_in = path("$path"); my @lines = $file_in->lines_utf8; my @commands; # for my $line (@lines){ if ( $line =~ /^(?:#|$)/){ say "line matched $line"; next; } else { push( @commands, $line ); } } say @commands; say "cardinality: ", scalar @commands; #my $capture = capturex "bash", @commands; #$logger->info("capx: $capture"); my $target_dir = path('/tmp'); my $tempfile = $target_dir->tempfile('foobarXXXXXX'); $tempfile->spew("@commands"); # not atomic my $capture = capturex "bash", $tempfile; $logger->info("capx: $capture"); __END__

    What doesn't work? I created a merge request, but it won't merge.

    Looking at the log, I'm amazed at what came through capturex:

    2023/03/07 22:43:27 INFO Time is Tue Mar 7 22:43:27 2023 2023/03/07 22:43:27 INFO Julian day is 2460011.73850694 2023/03/07 22:43:27 INFO ./1.wrap.pl 2023/03/07 22:43:30 INFO capx: [master 5000f52] next revision 11 files changed, 963 insertions(+) create mode 100644 1.aldeb.txt create mode 100755 1.wrap.pl create mode 100755 2.2023.pl create mode 100755 2.create.bash create mode 100755 2.wrap.pl create mode 100755 3.2023.pl create mode 100755 3.millcreek.pl create mode 100644 3.output.txt create mode 100644 3.wrap.pl create mode 100755 4.2023.pl create mode 100755 4.wrap.pl Branch 'master' set up to track remote branch 'master' from 'origin'.

    I'm still working through Git::Wrapper to abrogate this unusual approach, thx bliako++ for the tempfile idea.

    Cheers from a land of snow,

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11150697]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (8)
As of 2024-04-25 11:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found